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

Posted

技术标签:

【中文标题】具有一个值的 setState 如何工作?【英文标题】:How setState with one value work? 【发布时间】:2016-11-09 04:14:21 【问题描述】:

我在使用 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

【问题讨论】:

【参考方案1】:

在 ES6 中使用时

this.setState( value )

这只是一个简写

this.setState( value: value )

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


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

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

如果您想将状态设置为value.name,如果您必须设置的键仍然称为value,您将无法使用速记

this.setState( value: value.name )

【讨论】:

【参考方案2】:

这是一个 ES2015 功能,the property name shorthand。当您为其分配同名变量的值时,它可以避免您键入键的名称。

【讨论】:

以上是关于具有一个值的 setState 如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置映射输入的嵌套 JSON 数组对象的状态

设置状态的新 Promise 接收箭头函数

使用立即需要该状态进行 API 调用的 useState 挂钩时,如何等待 setState 调用完成?

如何显示具有隐藏值的微调器

如何在 HSQL DB 中创建具有最大行值的序列?

如何将具有多个值的列加载到表中的单独行中