设置状态然后读取状态显示之前的值[重复]

Posted

技术标签:

【中文标题】设置状态然后读取状态显示之前的值[重复]【英文标题】:Set state and then reading the state shows the previous value [duplicate] 【发布时间】:2019-09-21 11:55:56 【问题描述】:

我有以下代码在文本框值更改时维护该值。但是,在调试 valueHasChangedEvent 时,下面显示的变量 x 行奇怪地保留了先前的值。有什么我做错了吗?显示的示例是当我在文本框中输入“test123”时。

谢谢

onChange 事件

<Input onChange=this.valueHasChangedEvent
   type="text" 
   name="test" 
   id="test" />

方法

valueHasChangedEvent = (event) => 
    var self = this;
    const  name, value  = event.target;
    self.setState(test: value);  // value = 'test123'

    var x = self.state.test;  // x = 'test12'

【问题讨论】:

绝对是重复的@MoshFeu 【参考方案1】:

状态需要一些时间来改变,并且由于您在状态变化之前读取状态值,因此您将获得先前的值作为输出。所以需要在setState函数的回调中写入或者在shouldComponentUpdate()中读取

var x;
self.setState(test: value, (x) => 
  x = self.state.test
);

【讨论】:

请将 OP 参考现有答案,而不是再次回答。谢谢

以上是关于设置状态然后读取状态显示之前的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中读取iFrame(不在同一个域-YouTube)中的div状态[重复]

PHP记住cookie中的登录状态[重复]

状态正在更新但不显示[重复]

在reactjs中删除重复项后如何从状态值和setstate创建数组

设置状态后反应挂钩相当于回调函数[重复]

如何检查服务是不是正在运行[重复]