澄清说明:Vue.js动作/突变

时间:2018-10-17 15:28:24

标签: javascript vue.js

我需要澄清一下:这些功能之间的相互作用。我正在关注Vue.js教程,我们有一个动作会引起突变。

操作:

updateUser({commit}, user) {
  commit('setUser', {userId: user['.key'], user})
}

突变:

setUser(state, {user, userId}) {
  Vue.set(state.users, userId, user)
}

我的问题是关于操作中commit()调用中参数的顺序。有效负载是一个具有userId作为其第一名称-值对的对象,而其第二值是该用户对象本身。现在,在突变定义中,将突变期望的有效负载中的值反转。我无法想象JavaScript / Vue如何知道在setUser定义中期望什么类型的数据,从而使预期有效负载中的名称/值对的顺序无关紧要。那么,为什么该应用程序仍然可以运行?突变是否期望接收称为useruserId的变量,这就是顺序无关紧要的原因。

1 个答案:

答案 0 :(得分:1)

它与Vue无关,只是Javascript destructuring语法;顺序无关紧要,因为它是通过键从对象中提取值的。在您的情况下,<ol> <li>First li</li> <li>Second li</li> </ol> <section>A (conditional) paragraph.</section> <ol> <li>Third li</li> <li>Fourth li</li> </ol> <ol> <li>First li</li> <li>Second li</li> </ol> <ol> <li>Third li</li> <li>Fourth li</li> </ol>期望对象包含一个密钥setUser和一个密钥user,该密钥通过userId操作向下传递;还要注意,这只是语法糖,您不必一定要遵循它,也就是说,您可以编写如下突变来接受正常对象作为参数:

updateUser