第一次点击时,React State值不会更新

时间:2018-06-07 08:51:59

标签: javascript reactjs react-redux

我的输入标记为id="Table",状态为动态表。

 this.state = {
      dynamictable: ""
   }
 <input type="text" className="form-control box_ip" placeholder="Table" 
  id="Table"   value={this.state.dynamictable}/>

我有一个按钮next,点击按钮我正在调用一个函数updateEditorData()

updateEditorData() {

  this.setState({
        dynamictable: "Hello"
    });

this.table.forEach((id) => {
       let element = document.getElementById(id);
        if (element != undefined) {
            if (element.value != undefined && element.value != '') {
            this.replaceText(id, element.value);



            }
        }
    })

}

第一次单击nextthis.replaceText()未被调用,因为element.value为""但第二个元素为element.value即将到来{{1}但是为什么第一次不调用该函数并且动态表的初始状态是"hello"

我只需要第一次调用"",这意味着第一次点击this.replaceText()我需要用空字符串更新状态为“hello”

先谢谢。请指导我。

2 个答案:

答案 0 :(得分:1)

this.setState()在反应中是异步的。当你打电话时意味着什么 this.setState({dynamictable: "Hello"});它不是中级的。 因此,如果您在执行setState之后使用该状态,它可能还没有更新。

答案 1 :(得分:0)

setState工作异步,因此在调用它之后,this.state可能会保持不变。但是,文档中有一个名为setState的{​​{1}}可选的第二个参数,只要状态更新就会被调用:

callback