未在移动浏览器上检索会话存储
Session Storage not being retrieved on mobile browser
我有一个 create-react-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');
时为空,所以它 returns undefined
if (serializedState === null) {
return undefined;
}
我正在使用 beforeunload
事件侦听器来保存刷新时的状态。移动浏览器不支持此事件处理程序。将其替换为 unload
有效。
window.addEventListener('unload', () => {
saveToLocalStorage(store.getState());
});
我有一个 create-react-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');
时为空,所以它 returns undefined
if (serializedState === null) {
return undefined;
}
我正在使用 beforeunload
事件侦听器来保存刷新时的状态。移动浏览器不支持此事件处理程序。将其替换为 unload
有效。
window.addEventListener('unload', () => {
saveToLocalStorage(store.getState());
});