es6中从对象中提取属性的简写是什么?

时间:2016-05-27 10:06:22

标签: javascript reactjs ecmascript-6

我试图找出能否这样做:

    const {todos} = props.todos;
    this.todos = todos;

在一行中。

3 个答案:

答案 0 :(得分:2)

是的,你可以用这样的东西(如果你真的喜欢解构):

let todos = (({ todos } = props.todos), this.todos = todos);

(请注意,我们需要使用let代替const,因为我们在赋值表达式中重新绑定todos

我建议使用这个,不。与您的示例相比,这使得代码更难以理解。它还使用了不为人知的comma expression。对此代码使用两行而不是一行是没有害处的。 ES6解构的强大之处不在于减少JavaScript的LOC,而是让它更容易理解。以默认值为例:

let { todos = [] } = props;

这比

更具可读性
let todos = props.todos;
todos = todos ? todos : [];

最后这也可以起作用:

this.todos = props.todos.todos;

答案 1 :(得分:1)

由于您只提取单个属性,因此可以删除解构并使用

const todos = props.todos.todos;
this.todos = todos;
  

在一行?

const todos = this.todos = props.todos.todos;

答案 2 :(得分:0)

假设您想要分配但不需要中间todos值,您可以这样做:

({todos: this.todos} = props.todos);

({todos: {todos: this.todos}} = props);

但你真的不妨

this.todos = props.todos.todos;