未在移动浏览器上检索会话存储



我有一个创建-反应-应用程序,我将一些状态存储在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');时为 null,因此返回undefined

if (serializedState === null) {
return undefined;
}

我正在使用beforeunload事件侦听器来保存刷新时的状态。移动浏览器不支持此事件处理程序。用unload替换它有效。

window.addEventListener('unload', () => {
saveToLocalStorage(store.getState());
});

相关内容

  • 没有找到相关文章

最新更新