如何使用Vue / Vuex设置动态对象值?

时间:2019-10-01 09:00:01

标签: javascript vue.js vuex

我正在努力了解如何动态创建和填充键:使用Vue / Vuex在我的状态下的对象中创建值对,下面是一个示例: dataObject: {}(处于状态),以及创建新的key:value对的变异:

  setdataObjectProps: (state, payload) => {
    for (let [key, value] of Object.entries(
      state.dataObject
    )) {
      if (key == payload[0]) {
        dataObject.total_operation_time = payload[1];
        dataObject.machine_name = payload[2];
      }
    }
  },

此解决方案有效,但是key:value对应该已经存在于对象中(我已将它们设置为空字符串)。 我尝试像这样使用Vue.set()

Vue.set(dataObject.total_operation_time,  payload[1]);
Vue.set(dataObject.machine_name,  payload[2]);

但是,如果我正确理解的话,我希望了解第二个参数就是索引/名称,因此我一直在努力使其工作。有人可以像我五岁时那样解释,而不必先在对象中创建key:value对吗? 提前致谢! 附言它们还必须是反应性的。

1 个答案:

答案 0 :(得分:1)

Vue set应该仅以错误的方式使用才能完成工作:

  

向反应对象添加属性,确保新属性为   也是反应性的,因此触发视图更新。这必须用于添加新   属性,因为Vue无法检测到正常属性   附加内容(例如this.myObject.newProperty ='hi')。

但是函数参数看起来像这样

  
      
  • {对象|数组}目标
  •   
  • {string |数字} propertyName / index
  •   
  • {any}值
  •   

https://vuejs.org/v2/api/#Vue-set

您的情况应该是:

Vue.set(state.dataObject, 'total_operation_time',  payload[1]);
Vue.set(state.dataObject, 'machine_name',  payload[2]);