Javascript Can';t向Vue存储区中的变异发送第二个参数

Javascript Can';t向Vue存储区中的变异发送第二个参数,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我有一个很好的JS文件,像这样 export default { UPDATE_DATA: (state, data, meta) => { state.dataTable = data; if (meta === undefined) return; state.activeDataRow = meta; }, ... } 通过以下方式调用不同的操作 context.commit("UPDATE_DATA", Map.table(payl

我有一个很好的JS文件,像这样

export default {
  UPDATE_DATA: (state, data, meta) => {
    state.dataTable = data;

    if (meta === undefined)
      return;

    state.activeDataRow = meta;
  }, ...
}
通过以下方式调用不同的操作

context.commit("UPDATE_DATA", Map.table(payload.type, data));
context.commit("UPDATE_DATA", Map.table(payload.type, data), meta);
我已经检查了动作中发送的meta,它肯定不是未定义的。然而,当我检查突变中的meta时,它是!为什么?如何解决此问题?

vuex建议在第二个参数中发送有效负载

在大多数情况下,有效负载应该是一个对象,以便它可以包含多个字段,并且记录的变异也将更具描述性:

所以你可以用有效载荷这样称呼它:

context.commit("UPDATE_DATA", {data: Map.table(payload.type, data), meta: meta});
您的突变如下所示:

export default {
  UPDATE_DATA: (state, payload) => {
    state.dataTable = payload.data;

    if (payload.meta === undefined)
      return;

    state.activeDataRow = payload.meta;
  }, ...
}
context.commit({
     type:: "UPDATE_DATA", 
     data: Map.table(payload.type, data), 
     meta: meta
});

还有一种alternet调用突变的方法,称为对象样式提交。您可以在提交中传递一个对象,类型为名称,如下所示:

export default {
  UPDATE_DATA: (state, payload) => {
    state.dataTable = payload.data;

    if (payload.meta === undefined)
      return;

    state.activeDataRow = payload.meta;
  }, ...
}
context.commit({
     type:: "UPDATE_DATA", 
     data: Map.table(payload.type, data), 
     meta: meta
});

正确的。我在网页上看到了这一点,但按照我的解释,使用payload对象是一种建议,而不是技术强制要求。这就是为什么当我蹲在那个地方时我很惊讶。似乎将所有内容放入有效负载是一项要求,而不是建议。不管怎样,我通过使用一个动作调用的两个单独的突变来解决这个问题。(这在目前的情况下更有意义。)哥们,我刚看过你的代表图。你已经懒洋洋地穿了4年了,然后发生了一些事情——你的名声爆炸了。什么改变了@KonradViltersten嗯,我开始了Vue:)