【问题标题】:ReactJS and setState syntaxReactJS 和 setState 语法
【发布时间】:2019-02-10 08:21:15
【问题描述】:

我正在尝试理解我的 React 应用程序中的以下语法。本质上我想了解 setState() 中的代码

this.getSomePromise().then(
      // resolve callback function
      someImg =>
        this.setState(prevState => ({
          ...prevState,
          doggo: someImg.message
        })),
      // reject callback function
      () => alert("Rejected!")
    );

我期待的是这样的语法;

    this.setState(prevState => {
// some code
    })

但是prevState => 之后的圆括号让我感到困惑。

【问题讨论】:

标签: javascript reactjs ecmascript-6 es6-promise


【解决方案1】:

ES6 箭头使用允许跳过return 关键字的隐式返回语法。这是隐式返回的对象:

this.setState(prevState => ({
  ...prevState,
  doggo: someImg.message
}))

这是显式返回的捷径:

this.setState(prevState => {
 return {
  ...prevState,
  doggo: someImg.message
 }
})

这是作为新状态返回的对象字面量:

{
  ...prevState,
  doggo: someImg.message
}

不使用 (...) 括号括起来会导致语法错误,因为对象字面量中的 {...} 大括号会被解析为函数括号。

【讨论】:

  • 非常感谢...这真的很有帮助...只是一个简单的问题... ...prevState 代表什么?它是否代表 ES6 REST/Spread 运算符语法?
  • 这是 ES2018 对象传播,对 prevState 对象进行浅拷贝。这是Object.assign({}, prevState)的语法糖
猜你喜欢
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 2018-09-06
相关资源
最近更新 更多