У меня есть приложение create-response-app, и я храню некоторое состояние внутри sessionStorage, чтобы сохранить некоторое состояние redux во время сеанса пользователя.
В браузерах для настольных ПК все работает нормально, но при отладке на мобильном устройстве в Safari или Chrome состояние не извлекается при обновлении. Это вызывает ошибки, поскольку состояние больше не существует.
Есть идеи, почему это происходит только в мобильном браузере?
Вот как я сохраняю и получаю состояние с помощью sessionStorage:
export function saveToLocalStorage(state: AppState) {
const hasUserProfileId =
state.system.profile.id && state.system.profile.id !== '';
try {
if (hasUserProfileId) {
const serializedState = JSON.stringify(state);
sessionStorage.setItem('state', serializedState);
}
} catch (error) {
console.log('Error saving state to local storage');
}
}
function loadFromLocalStorage() {
console.log('loadFromLocalStorage - 1');
try {
const serializedState = sessionStorage.getItem('state');
if (serializedState === null) {
return undefined;
}
return JSON.parse(serializedState);
} catch (error) {
console.log('Error loading state from local storage');
return undefined;
}
}
его ноль при выполнении const serializedState = sessionStorage.getItem('state');
, поэтому он возвращает undefined
if (serializedState === null) {
return undefined;
}
beforeunload
, который не поддерживался. В итоге я использовал прослушиватель событийunload
, который поддерживается. - person dcotter   schedule 31.12.2019