我有一个react组件,当它安装时,我想获取请求并更新状态,如下所示:
componentDidMount(){
axios.get("http://localhost:8000/api")
.then(response => {
console.log(response);
Object.assign(this,{state:{isLoading: false}});
this.setState({});
console.log(this.state.isLoading);
}).catch(e => console.log(e));
}
我尝试同时使用this.setState()
和Object.assign
,但是当我管理this.state.isLoading
时,它仍然显示为true。有人知道我在做什么错吗?
答案 0 :(得分:1)
看到isLoading: true
可能有多个原因。其中之一是this.setState()
是异步的,因此console.log
可能在状态更新之前运行。您可以通过在回调函数内部登录来检查此情况。这是this.setState
的第二个参数,它在this.setState
完成后运行。
此外,我将避免尝试通过对象分配来为此分配状态,并坚持使用this.setState
。如果您想在更改isLoading
的同时保持其余状态,则可以使用散布运算符,如下所示:
this.setState({ ...this.state, isLoading: false}, () => console.log(this.state.isLoading))