React JS进行不带componentdidmount()的异步调用

时间:2018-10-03 03:37:55

标签: reactjs fetch

我试图仅在用户单击“提交”按钮时触发API调用

这是在用户登录上下文中,其中父级的组件状态得到更改。

extension UICollectionView: Configurable {
    typealias Data = UICollectionViewLayout
    func configure(data: Data) {
        collectionViewLayout = data
    }
}

我的问题:我可以做这样的事情吗,还是我绝对需要使用init(frame:)吗?

我已经为此苦苦挣扎/搜索了太多时间,但仍然找不到使它起作用的方法。

1 个答案:

答案 0 :(得分:1)

可以这样做。据我所知,一旦到达//check if user is authentificated,您就会遇到问题。发生这种情况是因为react的setState是异步的。

为了在修改状态后立即访问状态,setState函数采用了可选的回调函数,因此您可以尝试这样编写代码:

this.setState({answer:json}, () => {
    //check if user is authentificated
    alert("Server Answer : "+ this.state.answer.answer);
    if(this.state.answer.answer.localeCompare('true') == 0){
      this.props.app.setState({auth: true});
      sessionStorage.setItem('auth', true);
    }
    else if (this.state.username != ""){
      alert("INCORRECT USERNAME PASSWORD ");
    }
});