切换sessionStorage后登出报错:无法解构useSelector返回值的token
问题原因
核心问题是登出后Redux状态中的auth.user变为null,页面代码直接对null进行解构操作,导致无法读取token属性报错。切换到sessionStorage后触发该问题的具体原因如下:
- Redux初始化逻辑处理差异:应用启动时会从存储中读取用户信息初始化
auth.user。原localStorage逻辑可能在读取不到数据时,将auth.user设为空对象{},此时解构token只会得到undefined,不会报错;但切换到sessionStorage后,读取不到数据时直接将auth.user设为null,登出删除sessionStorage的user后,若页面触发状态重新初始化(比如刷新、路由跳转),auth.user就会变成null,触发解构报错。 - 登出时Redux状态未同步正确重置:你的
logout函数仅删除了sessionStorage中的用户数据,但没有在Redux的authSlice中同步将auth.user重置为空对象{},而是让其变为null,导致页面组件读取状态时解构失败。 sessionStorage的特性间接影响:虽然sessionStorage仅在当前会话有效,但这里的核心问题并非特性本身,而是你在切换存储方式时,未同步调整Redux状态的初始化与重置逻辑,才导致null值进入状态引发报错。
内容的提问来源于stack exchange,提问作者user22092642
相关产品推荐
相关产品推荐

