Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在Redux中使用扩展运算符或Object.assign的权利是什么?_Reactjs_React Native_Redux_Flux_React Redux - Fatal编程技术网

Reactjs 在Redux中使用扩展运算符或Object.assign的权利是什么?

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 {

我对是否使用扩展运算符或Object.assign in reducer函数将更改应用于目标对象有点困惑

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
  • 需要更少的代码来表达相同的想法

合适的术语是什么意思?如果它起作用-它是适当的,如果它不起作用-它不是。两者都很好,但我想知道哪种方法是正确的,没有绝对“正确”的方法来做任何事情。谢谢@zerkms
var _extends = Object.assign || /* a polyfill */;

return _extends({}, todo, {
  completed: !todo.completed
});