无法向Vue存储中的变异发送第二个参数

Kon*_*ten 2 javascript vue.js vuex

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

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

    if (meta === undefined)
      return;

    state.activeDataRow = meta;
  }, ...
}
Run Code Online (Sandbox Code Playgroud)

它通过以下方式被不同的行为召唤.

context.commit("UPDATE_DATA", Map.table(payload.type, data));
context.commit("UPDATE_DATA", Map.table(payload.type, data), meta);
Run Code Online (Sandbox Code Playgroud)

我检查了动作中发送的元数据,它绝对不是未定义的.但是,当我检查突变中的meta时,它就是!为什么?我该如何解决这个问题?

Sau*_*abh 7

vuex 文档建议的是在第二个参数中发送有效负载.

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

所以你可以用有效载荷调用它:

context.commit("UPDATE_DATA", {data: Map.table(payload.type, data), meta: meta});
Run Code Online (Sandbox Code Playgroud)

你的变异将如下所示:

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

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

    state.activeDataRow = payload.meta;
  }, ...
}
Run Code Online (Sandbox Code Playgroud)

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

context.commit({
     type:: "UPDATE_DATA", 
     data: Map.table(payload.type, data), 
     meta: meta
});
Run Code Online (Sandbox Code Playgroud)