使用componentWillReceiveProps
生命周期方法解决了以下问题。现在,在升级React版本时,我很难摆脱它。
在我的根组件App.js
中,我调用一个操作来提取已登录的用户信息(如果未登录,则为null)。我正在使用redux,因此它会放在我的商店中。
我还有一个名为MyPolls的组件,该组件可获取用户提交的民意测验列表,因此它需要我商店中的用户信息。除非我在MyPolls.js
页面上并且刷新浏览器,否则它会很好用。状态丢失了,所以我不再能够基于登录的用户信息来获取民意调查。
当时我使用以下代码修复了该问题:
componentWillReceiveProps(nextProps) {
if (!this.props.auth && nextProps.auth) {
this.props.getMyPolls(nextProps.auth._id, this.state.pageSize, 0)
}
}
刷新页面可满足谓词!this.props.auth && nextProps.auth
,因此我将触发再次获取用户投票的操作。我的问题和解决方案与this one
现在,我尝试不使用componentWillReceiveProps
来解决此问题,因为不建议使用此生命周期挂钩。我尝试用componentDidUpdate
替换它,但这不起作用。在获取任何内容之前,应用程序首先呈现组件,此时调用componentWillReceiveProps
,然后应用程序重新渲染。 componentDidUpdate
在重新提交后被称为 。
我还尝试了在this.props.getMyPolls(nextProps.auth._id, this.state.pageSize, 0)
期间调用componentDidMount
来获取用户的民意调查,因为这是在初始渲染之后发生的。这也行不通,因为此时用户的信息仍为null
。
有人可以帮助解决这个问题吗?