具有一个值的 setState 如何工作?

How setState with one value work?

我在使用 npm 包时查看了一些代码 React-Select

有趣的是,我看到 setState 被这样使用:

handleSelectChange (value) {
        console.log('You\'ve selected:', value);
        this.setState({ value });
    },

setState 是如何工作的?它只提供一个值?我问是因为我想从我的输入中捕捉一件事然后改变它。但这并不像预期的那样有效。

handleSelectChange (value) {
        console.log('You\'ve selected:', value);
        this.setState({ value.name });
    },

完整代码在这里,相当短:https://github.com/JedWatson/react-select/blob/master/examples/src/components/Multiselect.js

在 ES6 中使用时

this.setState({ value })

只是一个shorthand
this.setState({ value: value })

这里没有其他神奇的事情发生


为了更清楚,考虑这个例子

var x = 5
var y = 10
var z = { x, y }
console.log(z)
//=> { x: 5, y: 10 }


如果您想将状态设置为 value.name 如果您必须设置的密钥仍被称为 value[=16=,则您将无法使用 shorthand ]

this.setState({ value: value.name })

这是 ES2015 的特性,the property name shorthand。它使您在为同名变量赋值时无需键入键的名称。