为什么Vuex内数据改变了而组件没有进行更新?

Posted the-master-of-time

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Vuex内数据改变了而组件没有进行更新?相关的知识,希望对你有一定的参考价值。

这两天在进行一个首页的制作,结果就碰到了标题上所述的问题了,用了一天的时间在网上查资料。终于找出了问题所在

 

Vuex的数据写在store里,在组件中需要用到this.$store.commit() 来调用store中mutations 里面的一些数据处理方法来向后端请求数据。并在computed计算属性中通过this.$getters来获取Vuex的数据。

在控制台中查看Vuex获取后端数据的情况,数据获取完成并且被getters到组件中,但组件显示数据居然还是空的。而computed是会自动监听数据变化进行组件更新的。这里为什么没有生效呢?

原因当然是因为没有监听到数据变化。为什么没有监听到数据变化呢?

其实,是由于vue对数组数据的变化只能监听到以下几种变化

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

而我在对数据进行赋值的时候是直接用 a[i] = b[i]的方式进行赋值的。如果换成a.push(b[i])那么视图就会随着数据的变化而更新了。

以上是关于为什么Vuex内数据改变了而组件没有进行更新?的主要内容,如果未能解决你的问题,请参考以下文章

VueJs(14)---理解Vuex

vuex的dom更新回调问题

VueX:为啥 vuex 存储数据不更新组件数据属性?

组件内或者vuex数据已变化但是页面显示或许不正常

Vuex

十Vue:Vuex实现data(){}内数据多个组件间共享