奇怪的 setState 用法

gio*_*gim 4 javascript reactjs

在 React文档中,我对 setState 的使用感到困惑。看到这个

 handleCelsiusChange(temperature) {
    this.setState({scale: 'c', temperature}); // no key
  }
Run Code Online (Sandbox Code Playgroud)

状态定义如下

this.state = {temperature: '', scale: 'c'};
Run Code Online (Sandbox Code Playgroud)

因此,我期待的不是我一开始所展示的,而是这样的电话:

 handleCelsiusChange(temperature) {
    this.setState({scale: 'c', temperature: temperature}); // with key
 }
Run Code Online (Sandbox Code Playgroud)

我错过了什么?(显然有一些自动转换发生)。

附注。temperature只是字符串而不是您从子组件获得的对象,例如

 handleChange(e) {
    this.props.onTemperatureChange(e.target.value);
  }
Run Code Online (Sandbox Code Playgroud)

Tom*_*ech 5

这只是语法糖。

{scale: 'c', temperature} // key -> "temperature", value -> temperature 
Run Code Online (Sandbox Code Playgroud)

是简写

{scale: 'c', temperature: temperature} // key and value explicitly defined
Run Code Online (Sandbox Code Playgroud)

这可以在MDN(ECMAScript 2015 中的新符号)上找到。