我有一个反应应用程序,允许用户从LI中选择,以根据他们选择的LI从第三方API获取搜索结果。 LI有一个点击处理程序,作为其中的一部分,向第三方发出API请求。第一次单击LI时,值为null,即使它应该是React状态的一部分。这是点击处理函数的一部分:
let choice = event.currentTarget.innerText;
this.setState({inputVal: choice});
let urlquery = this.state.inputVal
console.log(urlquery);
第一次单击LI时,console.log返回null。第二次单击它,您将返回正确的值。有关如何解决此问题的任何建议吗?
由于
答案 0 :(得分:0)
运行let urlquery = this.state.inputVal
行时,状态尚未更新。对setState(...)
的调用是异步的。在此处参考有关setState(...)
的反应文档:https://reactjs.org/docs/react-component.html#setstate
您处理此问题的选项是使用setState(...)
的第二个参数,这是一个在setState
实际更新state
或使用componentDidUpdate
后运行的回调}。两者都在上面引用的文档中提到。