我具有以下功能:
fetchData = () => {
fetch('/api/customerNodes' + this.state.number)
.then(response => response.text())
.then(message => {
this.setState({responseText: message});
});
};
如果我将浏览器指向localhost:3000/1234
,并且想要获得1234的路径名,则可以执行以下操作。 const num = window.location.pathname;
我面临的问题是我无法将该值设置为状态。
componentDidMount() {
const num = window.location.pathname;
this.setState({ number: num });
console.log(this.state.number);
//setInterval(this.fetchData, 250);
}
console.log
为空。
我在做什么错了?
答案 0 :(得分:2)
在this.setState
中使用回调函数
const num = window.location.pathname;
this.setState({ number: num }, () => {
console.log(this.state.number, 'number');
});
setState()通常是异步的,这意味着在您进行console.log状态记录时,它尚未更新。通过将日志放入setState()方法的回调中,可在状态更改完成后执行
答案 1 :(得分:0)
setState
是异步的,您不能期望它在下一行代码之前执行。
从文档中:
React可以将多个setState()调用批处理为一个更新,以提高性能。
答案 2 :(得分:0)
setState
是异步方法。如果您以render
方法记录状态,则可以获取数字。