我试图找出能否这样做:
const {todos} = props.todos;
this.todos = todos;
在一行中。
答案 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;