Javascript ReactJS和setState语法

Javascript ReactJS和setState语法,javascript,reactjs,ecmascript-6,es6-promise,Javascript,Reactjs,Ecmascript 6,Es6 Promise,我正在尝试理解React应用程序中的以下语法。本质上,我想理解setState()中的代码 我所期待的是这样的语法 this.setState(prevState => { // some code }) 但是紧跟在prevState=>之后的圆括号让我感到困惑。ES6箭头使用隐式返回语法,允许跳过返回关键字。这是隐式返回的对象: this.setState(prevState => ({ ...prevState, doggo: someImg.messa

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

我所期待的是这样的语法

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

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

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

this.setState(prevState => ({
  ...prevState,
  doggo: someImg.message
}))
这是显式返回的快捷方式:

this.setState(prevState => {
 return {
  ...prevState,
  doggo: someImg.message
 }
})
这是作为新状态返回的对象文本:

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

不使用
(…)
括号将导致语法错误,因为对象文字中的大括号将被解析为函数括号。

const foo=()=>{}
with
foo()//返回未定义的
,而不是
const bar=()=>({})with
bar(
)//返回一个空对象{}
和@adiga的可能重复项当您有更多需要评估的业务逻辑时,您应该在arrow函数中使用return。如果你所做的只是立即返回一些东西,那么你可以使用速记返回方法。非常感谢…这真的很有帮助…只是一个简单的问题…prevState代表什么?它是否表示ES6 REST/Spread运算符语法?这是ES2018对象Spread,它是
prevState
对象的浅层副本。这是
Object.assign({},prevState)
{
  ...prevState,
  doggo: someImg.message
}