vuex中state赋值在什么情况下会失败,求赐教,别的啥也没说,就问了这个问题
vuex中要修改state必须使用mutations,如果在mutations之外的方法中修改state都会失败
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入
在实际开发中会遇到因为某种特殊需要,页面的弹窗或者使用element-ui 等UI组件库,弹窗的显示隐藏会通过vuex相关变量来控制,如果直接点击关闭按钮,就相当于直接修改属性值,页面会报错。这个问题原因在于,state的数据在组件中具有的只是只读性,所以需要添加set 方法来解决。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.2k 阅读✓ 已解决
4 回答4.6k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
如果使用
this.$store.state.xxx = 123
这种方式修改state,报不报警告,不知道,但会成功修改。
但可能不会触发vue的依赖收集。无法触发依赖收集,会带来一个问题,可能修改后页面不会更新。这个可能还是小问题,你可以通过
$forceUpdate
强制刷新来解决。但最重要的原因是-数据变化可追踪,使用
this.$store.state
这种方式,无法收集依赖。如果项目庞大的时候,就会出现一个问题,你不知道数据为什么不是你想要的值,也不知道在哪个文件里被修改。所以最后再说一遍,vue中修改state必须使用mutation。