Componentdidmount:获取请求并设置状态

时间:2020-10-29 10:24:45

标签: reactjs

我有一个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。有人知道我在做什么错吗?

1 个答案:

答案 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))