Vuex getter无法更新状态更改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vuex getter无法更新状态更改相关的知识,希望对你有一定的参考价值。

当状态对象发生变化时,我无法获得更新的vuex getter。我正在尝试使用reduce函数来获取vuex getter以返回状态对象中值的总和。

// Mutation
state.shippingFees[method.sellerId] = method.fee; // state.shippingFees = { 1: 1900 }; etc.

// Getter
totalShippingFees: state => Object.values(state.shippingFees).reduce((total, fee) => total + fee, 0)

在state.shippingFees对象中设置运费关键值对后,getter仍然只返回0。

答案

Vue不允许向已创建的实例动态添加新的根级别响应属性。但是,可以使用Vue.set(object,key,value)方法将反应属性添加到嵌套对象

因此,您更新上述对象的方式不是反应性的。因此,您的值不会在getter中更新。要了解更多关于vue反应性的信息,请阅读here

为了使它成为反应,你需要使用$ set或object.assign

更新您的变异如下=>

Vue.$set(state.shippingFees,method.sellerId,method.fee);
另一答案

Vue无法检测属性添加或删除

使用Vue.set(state.shippingFees, method.sellerId, method.fee)

更多细节here

以上是关于Vuex getter无法更新状态更改的主要内容,如果未能解决你的问题,请参考以下文章

vuex使用,使用场景

无法通过getter vuex vuejs访问状态

Vuex getter 不会更新

Vuex 在异步操作完成之前访问状态

如何使用来自另一个模块的模块内的 getter 进行 Vuex 状态

如何使用另一个模块中的模块中的getter进行Vuex状态