我的输入标记为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);
}
}
})
}
第一次单击next
时this.replaceText()
未被调用,因为element.value为""
但第二个元素为element.value即将到来{{1}但是为什么第一次不调用该函数并且动态表的初始状态是"hello"
?
我只需要第一次调用""
,这意味着第一次点击this.replaceText()
我需要用空字符串更新状态为“hello”
先谢谢。请指导我。
答案 0 :(得分:1)
this.setState()
在反应中是异步的。当你打电话时意味着什么
this.setState({dynamictable: "Hello"});
它不是中级的。
因此,如果您在执行setState之后使用该状态,它可能还没有更新。
答案 1 :(得分:0)
setState
工作异步,因此在调用它之后,this.state
可能会保持不变。但是,文档中有一个名为setState
的{{1}}可选的第二个参数,只要状态更新就会被调用:
callback