从父组件获取刷新状态时,从componentWillReceiveProps迁移

时间:2018-11-14 10:56:23

标签: javascript reactjs react-redux

使用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

有人可以帮助解决这个问题吗?

0 个答案:

没有答案