Reactjs 在Redux中使用扩展运算符或Object.assign的权利是什么?
我对是否使用扩展运算符或Object.assign in reducer函数将更改应用于目标对象有点困惑Reactjs 在Redux中使用扩展运算符或Object.assign的权利是什么?,reactjs,react-native,redux,flux,react-redux,Reactjs,React Native,Redux,Flux,React Redux,我对是否使用扩展运算符或Object.assign in reducer函数将更改应用于目标对象有点困惑 const toggleTodo = (todo) => { return Object.assign({}, todo, { completed: !todo.completed }); }; 上面提到的代码使用Object.assign方法,下面的代码使用spread运算符 const toggleTodo = (todo) => { return {
const toggleTodo = (todo) => {
return Object.assign({}, todo, {
completed: !todo.completed
});
};
上面提到的代码使用Object.assign方法,下面的代码使用spread运算符
const toggleTodo = (todo) => {
return {
...todo,
completed: !todo.completed
};
};
在这两种方法中,哪一种是合适的方法?对象扩展操作符(
…
)在浏览器中不起作用,因为它还不是任何ES规范的一部分。唯一的选择是用Babel(或类似的东西)编译它
下面是从中编译的代码
正如您所看到的,它只是Object.assign({})
上的语法糖
没有正确的选择
在我看来,这些是重要的区别
适用于大多数浏览器(无需编译)Object.assign
- 对象的
未标准化…
保护您不意外地改变对象…
将在浏览器中不使用polyfill Object.assign…
需要更少的代码来表达相同的想法…
var _extends = Object.assign || /* a polyfill */;
return _extends({}, todo, {
completed: !todo.completed
});