Vuex mutator 方法无法更改状态属性
Vuex mutator method unable to change state properties
我在名为 user.js 的 vuex 模块中有以下代码:
import Vue from "vue";
import Vuex from 'vuex';
Vue.use(Vuex);
const state = {
user: {
firstName: null,
lastName: null,
lastLogin: null,
email: null,
password: null,
token: null
}
},
actions = {
setUser({commit}, user){
commit('setUser', user);
}
},
mutations = {
setUser:(state, newuser) => {
console.log(newuser) // Point 1
console.log(state.user) // Point 2
state.user.firstName = newuser.firstName;
state.user.lastName = newuser.lastName;
state.user.lastLogin = newuser.lastLogin;
state.user.email = newuser.email;
state.user.password = newuser.password;
state.user.token = newuser.token;
console.log(state.user) // Point 3
}
},
getters = {
getUser: (state) => state.user
};
export default {
state,
actions,
mutations,
getters
}
控制台显示第 1 点传递的对象已填充属性,但第 2 点和第 3 点之间的 state.user.foo
行没有正确地将这些值分配给上面声明的状态对象。
第 3 点的控制台日志显示如下:
{…}
email: (...)
firstName: (...)
lastLogin: (...)
lastName: (...)
password: (...)
token: (...)
我怎样才能让这个 mutator 真正改变状态?
将直接分配更改为 Vue.set(state, 'user', user)
会导致状态正确更新。
我在名为 user.js 的 vuex 模块中有以下代码:
import Vue from "vue";
import Vuex from 'vuex';
Vue.use(Vuex);
const state = {
user: {
firstName: null,
lastName: null,
lastLogin: null,
email: null,
password: null,
token: null
}
},
actions = {
setUser({commit}, user){
commit('setUser', user);
}
},
mutations = {
setUser:(state, newuser) => {
console.log(newuser) // Point 1
console.log(state.user) // Point 2
state.user.firstName = newuser.firstName;
state.user.lastName = newuser.lastName;
state.user.lastLogin = newuser.lastLogin;
state.user.email = newuser.email;
state.user.password = newuser.password;
state.user.token = newuser.token;
console.log(state.user) // Point 3
}
},
getters = {
getUser: (state) => state.user
};
export default {
state,
actions,
mutations,
getters
}
控制台显示第 1 点传递的对象已填充属性,但第 2 点和第 3 点之间的 state.user.foo
行没有正确地将这些值分配给上面声明的状态对象。
第 3 点的控制台日志显示如下:
{…}
email: (...)
firstName: (...)
lastLogin: (...)
lastName: (...)
password: (...)
token: (...)
我怎样才能让这个 mutator 真正改变状态?
将直接分配更改为 Vue.set(state, 'user', user)
会导致状态正确更新。