Kar*_*mar 3 flux reactjs react-native redux react-redux
我是否有点混淆是否在reducer函数中使用Spread运算符或Object.assign来将更改应用于目标对象.
const toggleTodo = (todo) => {
return Object.assign({}, todo, {
completed: !todo.completed
});
};
Run Code Online (Sandbox Code Playgroud)
然后上面提到的代码使用的是Object.assign方法,下面的代码是使用spread运算符
const toggleTodo = (todo) => {
return {
...todo,
completed: !todo.completed
};
};
Run Code Online (Sandbox Code Playgroud)
这两者中哪种方法是合适的
对象扩展operator(...)在浏览器中不起作用,因为它不是任何ES规范的一部分,只是一个提议.唯一的选择是用Babel(或类似的东西)编译它.
这是来自Babel的REPL的编译代码.
var _extends = Object.assign || /* a polyfill */;
return _extends({}, todo, {
completed: !todo.completed
});
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它只是语法糖Object.assign({}).
没有正确的选择.
据我所知,这些是重要的差异.
Object.assign 适用于大多数浏览器(无需编译)... 对象不标准化... 保护您免受意外改变对象... 如果没有它,将在没有它的浏览器中填充Object.assign... 需要更少的代码来表达相同的想法| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |