自动函数调用我可以使用除componentDidMount()?

时间:2018-02-24 11:41:53

标签: reactjs redux

我希望当用户前往路线时,某些项目会自动呈现在屏幕上。但是,因为这些项是从需要授权令牌的api请求获得的,所以我必须等待我的this.props.user被填充,因为它包含我的令牌。我的this.props.user属性通过api请求填充到我的网站的后端,这需要一些时间,足够长,以至于即使调用componentDidMount()包含代码,我的this.props.user也是STILL null这使得授权的api请求。因此,因为我的componentDidMount()没有填充this.props.user属性,所以它无法发送授权请求,我也不知道如何自动呈现所获得的项目,我将把它放到我的redux中存储。

我尝试在单独的函数中编写获取授权请求的代码,因为到那时,我的this.props.user属性已正确填充。但是,如果我在render()中调用该函数,它将在一个永远不会结束的循环中调用。我认为永远循环是因为redux更新。

有人知道我只能做一次自动授权请求吗?也许只有在this.props.user不为null时才会调用componentDidMount()?

编辑:我刚刚在componentDidMount()中添加了一个调用授权请求的setTimeout,以便稍后调用它,这将允许this.props.user填充,这似乎有效。唯一的问题是它感觉非常黑客。如果有人有任何其他建议,我会向他们开放!

1 个答案:

答案 0 :(得分:0)

如果填充props.user的API请求失败,您的解决方法可能无效 一种可能的解决方案可能是检查componentDidMount中的props.user,如果为null,则显示一条消息,指出验证未完成,并要求用户等待几秒钟并刷新。
您还应该知道API请求失败,以便告诉用户发生了错误,并且她/他应该检查互联网连接并刷新或其他相关消息。