什么时候可以使用React Router Replace(componentDidMount?)

时间:2019-05-23 18:54:30

标签: reactjs react-router

我有一个组件,如果有人复制该URL并将其分页到新标签中,则会崩溃,因为它缺少上一步中所需的数据。

我想将他们重定向到其他页面,并将其从他们的“后退”历史记录中删除。所以我在考虑使用“替换”

我一直在 componentDidMount 上进行此操作,但是注意到一切似乎都运行了两次。

// Page1Component
    componentDidMount(){


        if(true){
          const { replace } = props.routingStore;
          const params = props.match.params;

          replace('/members/home')
        }
      }

因此,当上面的代码被点击时,就会发生这种情况

  1. Page1Component componentDidMount加载
  2. HomeComponent componentDidMount加载
  3. Page1Component componentDidMount再次加载
  4. HomeComponent componentDidMount加载

1 个答案:

答案 0 :(得分:0)

您可以直接在render方法中使用Redirect组件:

if(...) {
  return <Redirect to="/members/home" push={false}/>;
}

请注意,使用push={false}将替换历史记录中的当前条目