当分派的动作使用Vue.set设置状态对象时,如何使状态获取器具有反应性?

时间:2019-05-29 15:42:27

标签: vue.js

我有一个按钮,该按钮设置为使用Vue.set更新商店对象,但是在使用不同的组件方法更改状态之前,不同组件中相同数据的getter不会起作用。

  1. 有问题的状态对象设置为由UUID键入的哈希值。生成对象,然后使用Vue.set

  2. 将其添加到状态对象
  3. 该按钮被设置为调度一个动作,我看到它在devtool中立即通过该动作:

mutations: {
  COMPLETE_STEP(state, uuid) {
    let chat = state.chatStates[uuid];
    let step = chat.currentStep;

    Vue.set(chat.data[step], "complete", true);
  }
},

actions: {
  completeStep({ commit }, uuid) {
    commit("COMPLETE_STEP", uuid);
  }
},
  1. 现在,当我想获取数据时,我有一个吸气剂可以获取数据。直到我执行其他导致重新渲染的操作后,该操作才会运行:
getters: {
  getChatStepComplete: state => (uuid, step) => {
    let chatState = state.chatStates[uuid];

    return chatState.data[step].complete;
  },
}

我希望getter立即显示更新的更改,而不是等待在其他重新渲染时进行更新。我该如何实现?

1 个答案:

答案 0 :(得分:0)

弄清楚了我的问题:当我第一次创建聊天并将其添加到该州时,我并没有创建数据数组。一旦我开始将其初始化为一个空数组,它就会开始变得被动。