Zustand状态持久化在普通浏览器与隐私浏览器中行为不一致的问题求助
Zustand状态持久化在普通浏览器与隐私浏览器中行为不一致的问题求助
大家好,我最近在做Zustand状态持久化到sessionStorage的功能,碰到了一个头疼的问题,想过来请教下各位大佬。
情况是这样的:在普通浏览器窗口里,我把登录状态保存到sessionStorage后,所有新打开的或者已存在的标签页都能共享这个状态,只要有一个标签页还开着,状态就一直能访问到。但是切换到隐私浏览模式(无痕窗口)后,事情就不对劲了——只有我设置状态的那个标签页能从sessionStorage里读取到登录状态,其他新开的标签页或者同窗口里的旧标签页,完全读不到这个状态。比如我在标签页1完成登录操作,把用户数据存进状态里,标签页2打开后还是显示未登录的状态。
下面是我的相关代码,方便大家帮我排查问题:
我的Auth Store配置
const useAuthStore = create<AuthState>()( persist( (set) => ({ isLoggedIn: false, user: null, login: (userData: UserData) => { console.log('login', userData); set({ isLoggedIn: true, user: userData }); }, logout: () => set({ isLoggedIn: false, user: null }), }), { name: 'user-storage', storage: createJSONStorage(() => sessionStorage), } ) );
登录逻辑代码
const storeLogin = useAuthStore((state) => state.login); // ... 中间省略了请求前的一些参数处理代码 // 登录请求成功后处理 const userData: UserData = response.data.apps; storeLogin(userData);
我现在有点懵,不清楚是隐私模式本身的机制限制了sessionStorage的标签页共享,还是我在Zustand的配置里漏了什么关键项?有没有办法让隐私模式下也能实现标签页间的状态共享,或者有没有其他替代方案能达到类似的效果?麻烦各位大佬帮忙看看,谢谢啦!
内容来源于stack exchange
相关产品推荐
相关产品推荐

