如何使用嵌套Vuex对象进行计算

时间:2019-08-14 20:34:17

标签: vue.js vuex

我在Vuex中有一个具有以下功能的对象:

// Define the object in the state
myObj = {};
// Add a key and give it an empty array
state.myObj[someNumericalId] = [];
// Add a value to the array
state.myObj[someNumericalId].push['someData'];

如何在以下情况下通知计算的变化

  • 将密钥添加到对象
  • 从任何数组中添加/删除值

我是否需要使用手表,还是可以仅通过计算来完成?一个很肮脏的例子,看看我是否能得到任何回报:

<span v-for="(someArray, someIndex) in getMyObj" v-bind:key="someIndex"> 
 <p> {{someIndex}} - {{JSON.stringify(someArray)}} </p>
</span>

computed: {
  ...mapGetters(['getMyObj'])
}

1 个答案:

答案 0 :(得分:2)

不需要watch,以下是使属性具有反应性的两种方法:

选项一:声明状态对象中的属性:

myObj = { someNumericalId: [] };

选项二:使用Vue.set将属性添加到您的对象中,以进行突变:

Vue.set(state.myObj, someNumericalId, []);

此后,push方法应自动触发更新。