Javascript 澄清:Vue.js操作/突变
我需要澄清一下:这些功能之间的相互作用。我正在学习Vue.js教程,我们有一个操作提交了一个变异 行动:Javascript 澄清:Vue.js操作/突变,javascript,vue.js,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()调用中参数的顺序。有效负载是一个以use
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
的变量,这就是为什么顺序无关紧要的原因?它与Vue无关,只是语法;顺序并不重要,因为它是通过键从对象中提取值;在您的情况下,setUser
需要一个对象,该对象包含一个键user
和一个键userId
,该键由updateUser
操作传递;还请注意,这只是一种语法,您不必遵循,也就是说,您可以编写接受普通对象作为参数的变体,如下所示:
setUser(state, obj) {
Vue.set(state.users, obj.userId, obj.user)
}
天哪!我忘记了解构,只是把它看作一个对象。非常感谢您的澄清。