vuex中state赋值在什么情况下会失败

好好学习321
  • 169

vuex中state赋值在什么情况下会失败,求赐教,别的啥也没说,就问了这个问题

回复
阅读 810
3 个回答
✓ 已被采纳
vue中要修改state必须使用mutations!!!!

如果使用this.$store.state.xxx = 123这种方式修改state,
报不报警告,不知道,但会成功修改。

下面是缺陷点:

但可能不会触发vue的依赖收集。无法触发依赖收集,会带来一个问题,可能修改后页面不会更新。这个可能还是小问题,你可以通过$forceUpdate强制刷新来解决。

但最重要的原因是-数据变化可追踪,使用this.$store.state这种方式,无法收集依赖。如果项目庞大的时候,就会出现一个问题,你不知道数据为什么不是你想要的值,也不知道在哪个文件里被修改。

所以最后再说一遍,vue中修改state必须使用mutation。

在实际开发中会遇到因为某种特殊需要,页面的弹窗或者使用element-ui 等UI组件库,弹窗的显示隐藏会通过vuex相关变量来控制,如果直接点击关闭按钮,就相当于直接修改属性值,页面会报错。这个问题原因在于,state的数据在组件中具有的只是只读性,所以需要添加set 方法来解决。

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

宣传栏