请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

state数据读取的问题

既然state里的数据是从缓存里读取的,那为什么mutation里面setToken 和setUserInfo 还有存在的必要吗? action 里直接调用 saveToken 这么操作不好吗?请老师讲解下。

正在回答 回答被采纳积分+3

1回答

Sunday 2021-11-05 09:53:54

你好
修改state的唯一方式是通过mutation,这是为了保持清晰的数据流。如果没有的话那么state就不可变了,如果要切换用户那么无法实现了

0 回复 有任何疑惑可以回复我~
  • 提问者 大竹子哥哥 #1
    老师,我的意思是 
    async login(context, userProfile) {
          // 用户数据
          const rawData = JSON.parse(userProfile.rawData);
          const { data: res } = await login({
            signature: userProfile.signature,
            iv: userProfile.iv,
            nickName: rawData.nickName,
            gender: rawData.gender,
            city: rawData.city,
            province: rawData.province,
            avatarUrl: rawData.avatarUrl
          });
          // 登录逻辑
          this.commit('user/saveToken', res.token);
          this.commit('user/saveUserInfo', JSON.parse(userProfile.rawData));
        },
    绕过mutation 里面的setToken和setUserInfo先将数据保存操缓存,然后state里直接读取缓存,这样会有影响吗?
    回复 有任何疑惑可以回复我~ 2021-11-05 10:06:36
  • Sunday #2
    这样是有问题的。state 值变化有两个地方。
    第一是初始化时,这个会在刷新页面后初始化。
    第二个是在页面不刷新时修改,此时只应该通过mutation修改
    回复 有任何疑惑可以回复我~ 2021-11-05 10:14:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信