Zustand带persist中间件的Store无法写入LocalStorage问题求助
Zustand带persist中间件的Store无法写入LocalStorage问题求助
嘿各位大佬,我最近在搞Zustand状态管理的时候遇到了个卡壳的问题,想请大家帮忙看看!
我的需求是这样的:目前先给用户自动分配一个UUID作为临时ID,后续用户登录后再替换成他们的真实用户ID;如果是游客模式的话,这个随机生成的UUID要能在浏览器会话之间保留下来,不会一刷新就变。
我写了下面这段Zustand Store的代码,用了persist中间件来持久化到localStorage:
import { create } from 'zustand'; import { persist } from 'zustand/middleware'; export interface UserState { /* User identity */ userId: string; } export const useUserStore = create<UserState>()( persist( (): UserState => ({ userId: crypto.randomUUID(), }), { name: 'myioko-user-storage', }, ), );
但实际运行的时候完全不符合预期:每次刷新页面,userId都会重新生成一个新的,而且我在浏览器的localStorage里根本找不到myioko-user-storage这个键值对。我试了两个不同的浏览器,甚至用了隐身/隐私模式,结果都是一样的。更奇怪的是,我手动调用localStorage.setItem()去存值是能成功的,但Zustand的persist中间件就是不往里面写东西。
有没有大佬遇到过类似的问题?或者能帮我看看代码里哪里写错了吗?万分感谢!
内容来源于stack exchange
相关产品推荐
相关产品推荐

