在反应中调用api后设置状态

时间:2019-03-19 10:24:27

标签: reactjs express axios

我尝试了多种设置状态的方法,但是由于某种原因,状态从未更新。这是我希望状态更改为JSON数据

export class Provider extends Component {
  state = {
    posts: [],
    profileinfo: {},
    dispatch: action => this.setState(state => reducer(state, action))
  };

  componentDidMount() {
    fetch("http://localhost:3001/login").then(response =>
      response
        .json()
        .then(data => this.setState({ profileinfo: data.firstname }))
    );
    console.log(this.state.profileinfo);
  }

  render() {
    // ...
  }
}

1 个答案:

答案 0 :(得分:0)

setState是异步的。您的控制台日志可能在状态更新之前触发。如果您想在setState调用之后查看结果,请按照以下方式进行操作:

data => this.setState({ profileinfo: data.firstname }, () => {
  console.log(this.state);
});