重定向后React组件生命周期仍在运行

时间:2018-10-18 12:51:28

标签: reactjs redirect react-router

在我的组件中,我想检查用户是否已登录,如果没有,请重定向到登录页面。当前,我在componentWillMount中进行检查并重定向。

  public componentWillMount() {
    if(this.props.master === null) {
      this.props.history.push('./login');
    }
  }

尽管重定向确实发生了,但是render()和componentDidMount()都仍在运行,这使我的代码崩溃了,因为在那里我认为master不是null。

2 个答案:

答案 0 :(得分:1)

考虑使用这种机制:

When user is not logged in redirect to login. Reactjs

要将用户重定向到路由器上的登录页面,而不是受限组件。

请注意componentWillMount,因为它将在以后的版本中弃用。 https://reactjs.org/docs/react-component.html#unsafe_componentwillmount

答案 1 :(得分:0)

尝试:

  

如果shouldComponentUpdate()返回false,则将不会调用componentWillUpdate()render()componentDidUpdate()

shouldComponentUpdate() {
  if (this.props.master == null) return false
}

原始答案来自:Stop rendering of a component after componentDidMount()