请稍等 ...
×

采纳答案成功!

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

关于Vuex的问题。

Vuex 本质上是不是就是一个全局大单例的对象(用于集中存储Vue的一些数据。)?或者说是一个被设置成了响应式的大单例对象?

  1. 在state里里面设置的数据就和组件里的data一样,被设置成响应式了?
  2. mutations 修改和直接用 this.$store.state.x = ‘xx’ 其实差别就只是在于 Vue 的 devtool 是否能够监控到这个数据的修改,能够更方便的使用devtool 中的 vuex 工具进行调试而已?
  3. actions 一些异步的丢在里面,但是异步回调回来了,仍然是用 commit 去提交修改的原因还是因为第二条?
  4. getter 就没啥好说了,就是一个同步的过滤的方法而已.
  5. …mapState 放到 computed 里面,本质上是因为 state 已经被设置成响应式了,我们在这里访问到的 this.$store.state.data 其实是 data 的 get / set ?

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

1回答

Jokcy 2019-06-22 17:07:54
  1. 是的

  2. 不是,vuex开发时是不允许你直接设置this.$store的,从设计上来说这也是不允许的

  3. 修改数据应该都通过commit

    5. 通过computed来获取具体的store数据是最好的方式

0 回复 有任何疑惑可以回复我~
  • 我自己测试了一下,发现 可以使用 this.$store.state.count = xxx
    可以修改数据,起码在界面上显示是没问题的。
    在控制台里也没有看到警告之类的。
    唯一的影响就是在 Vuex 调试里,看不到最新数据(数据在调试工具中捕获不到,导致不同步),也就是不能用Vuex进行调试。
    但是如果我不需要使用到Vuex调试呢?
    
    我这其实也不是钻牛角尖。
    
    觉得吧,既然Vuex这么强烈建议我们使用commit提交,就应该给与一些强制性的手段。
    
    现在啥约束的没有,全靠自觉。
    回复 有任何疑惑可以回复我~ 2019-06-22 22:05:17
  • Jokcy 回复 提问者 qq_缺南摸了个北_0 #2
    印象中是有的,你确定你用的不是production的bundle?
    回复 有任何疑惑可以回复我~ 2019-06-23 20:14:40

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信