如何通过扩展Route来创建privaterouter

时间:2017-03-25 01:12:34

标签: reactjs react-router

我创建了像这样扩展Route的PrivateRoute类:

    class PrivateRouteContainer extends Route {

      render() {

        let component = super.render();
        let {user, path} = this.props;
        let match = this.state.match;
        if (match) {
          if (user.auth.isLogin) {
            return component;
          } else {
            return <Redirect to='/login' />;
          }
        } else {
          return null;
        }
      }
    };

并像

一样使用它
    <PrivateRouteContainer exact component={PanelContainer} path={ '/user' } />
    <PrivateRouteContainer component={OrderContainer} path={ '/user/order' } />

但我认为我错过了一些东西,因为当哈希状态发生变化时,渲染的内容仍然相同并刷新浏览器,它可以从容器渲染中获得正确的内容。

需要一些帮助来找出我错过的内容:)

1 个答案:

答案 0 :(得分:0)

class PrivateRouteContainer extends Route {

  render() {
    let {user, path} = this.props;
    let match = this.state.match;
    if (match) {
      if (user.auth.isLogin) {
        return super.render();
      } else {
        return <Redirect to='/login' />;
      }
    } else {
      return super.render();
    }
  }
};