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

标签 javascript reactjs ecmascript-6

我想知道我是否可以做到这一点:

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

在一行中。

最佳答案

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

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

(请注意,我们需要使用 let 而不是 const,因为我们在赋值表达式内重新绑定(bind) todos)

我会推荐使用这个吗,不。与您的示例相比,这使得代码更难以阅读。它还使用 comma expression这不太为人所知。这段代码使用两行而不是一行并没有什么坏处。 ES6 解构的强大之处不在于减少 JavaScript 的 LOC,而是使其更易于理解。以默认值为例:

let { todos = [] } = props;

这比

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

最后,这也可以正常工作:

this.todos = props.todos.todos;

关于javascript - es6 中从对象中提取属性的简写是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37480642/

相关文章:

javascript - 带有 AngularJS 的某种俄罗斯娃娃容器的动态编辑表单

以任意顺序匹配多个可选字符串的 JavaScript 正则表达式

javascript - 类似的 $http 请求首先陷入挂起状态,然后 NodeJS 服务器失败

javascript - 尽管将 webpack-dev-server 的 HistoryApiFallback 设置为 true,但我的 React 应用程序仍收到 404 错误

javascript - 编译TypeScript时如何处理外部模块?

javascript - 无法在 'replaceState' 上执行 'History' <local_URL> 无法在源为 'null' 的文档中创建

javascript - 在 react 中将事件监听器附加到 componentDidUpdate

reactjs - typescript 中的界面状态和 Prop react

javascript - 使 babel 运行时对于不同的 webpack 包是全局的

javascript - 使用 ES6 (Babel) 导出类