You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 14:04:30