我需要澄清一下:这些功能之间的相互作用。我正在关注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
定义中期望什么类型的数据,从而使预期有效负载中的名称/值对的顺序无关紧要。那么,为什么该应用程序仍然可以运行?突变是否期望接收称为user
和userId
的变量,这就是顺序无关紧要的原因。
答案 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