javascript - Vuex:在 Vuex 突变中更新多个状态属性的最佳方法是什么?
问题描述
我有一个命名空间的 Vuex 突变,我正在尝试一次更新多个状态属性。为了避免重复,我想使用 ES6 扩展运算符。Object.assign 按预期工作,但扩展运算符无法更新 VUEX 状态。这是说明问题的代码:
const authorizationModule = {
namespaced: true,
state: {
status: '',
jwt: '',
user: {
email: ''
}
},
mutations: {
AUTH_SUCCESS(state, payload) {
const { jwt, user } = payload;
// Too much repitition (needs to be abstracted)
state.jwt = jwt;
state.status = 'status';
state.user = user;
// 1. Object.assign works correctly
// state = Object.assign(state, {
// jwt,
// status: 'success',
// user
// });
// 2. Spread operator does not work
// let newState = {
// ...state,
// jwt,
// status: 'success',
// user
// }
// state = newState
},
}
}
这很有趣,因为我将调试器放入代码中并在浏览器中检查它。似乎展开运算符的返回值正在返回一个不同的对象。Object.assign 实现似乎在对象中有 getter 和 setter 函数(这就是它按预期工作的原因)。这是我的控制台的图像:
您可以看到第二个示例中的对象缺少某些 Vuex getter 和设置方法。
所以问题仍然存在:是否可以在这种情况下使用扩展运算符来更新 Vuex 中的多个状态属性?
解决方案
推荐阅读
- sql - 对于第 1 列中的每个值,根据第 2 列中的最大值获取第 3 列的值
- r - 如何对数值向量中的值进行分组和汇总
- javascript - 如何将复选框开关中的值发送到 MySQL 数据库
- javascript - 如何删除不包含任何字符串的行?角
- git - 如何将本地和远程 git 存储库恢复到以前的提交?
- ruby-on-rails - 如何使用设计编辑创建 registrations_controller 操作?
- python - 使用 Scipy Optimize 查找最小值时出现 NoneType 错误
- javascript - 我想知道在第一种情况下,返回的函数被称为中间件,但在第二种情况下,返回的函数没有被调用
- django - django项目中的.env keyError
- python - 数组的笛卡尔积 - 第 2 部分