Javascript 海关;“私人路线”;返回React路由器路由| |重定向的组件会导致不变冲突

Javascript 海关;“私人路线”;返回React路由器路由| |重定向的组件会导致不变冲突,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我有如下功能,如React Router Docs中所示,唯一的例外是我正在使用传递给组件的prop检查用户是否经过身份验证: const PrivateRoute = ({ component: Component, ...rest }) => { return ( <Route {...rest} render={(props) => { return ( props.isAuthenticated ?

我有如下功能,如React Router Docs中所示,唯一的例外是我正在使用传递给组件的
prop
检查用户是否经过身份验证:

const PrivateRoute = ({ component: Component, ...rest }) => {
  return (
    <Route
      {...rest}
      render={(props) => {
        return (
          props.isAuthenticated ? (
            <Component {...props} />
          ) : (
            <Redirect
              to={{
                pathname: '/login',
                state: { from: props.location },
              }}
            />
          )
        );
      }
      }
    />
  );
};
当我将
isAuthenticated
设置为
true
并且
PrivateRoutes
应该呈现的
错误是
不变冲突:超过了最大更新深度。
我设法跟踪到
PrivateRoute
函数,该函数导致无限循环,这反过来应该会导致错误。但我一辈子都不明白为什么会发生这种事。如果有人给我指点,我将不胜感激

return (
  <React.Fragment>
    { isLoading ? (<SplashScreenView />) : (
      <Router>
        <ContentContext.Provider value={appContent}>
          <TitleBarRouter />
          <Switch>
            <Route exact path="/login" render={props => <LoginView {...props} performAuthentication={this.performAuthentication} isAuthenticating={isAuthenticating} isAuthenticated={isAuthenticated} />} />
            <PrivateRoute exact path="/" render={props => <MainView {...props} checked={appContent.checked} elapsed={elapsed} />} />
            <PrivateRoute exact path="/settings" component={SettingsView} />
            <PrivateRoute exact path="/card" component={CardView} />
            <PrivateRoute exact path="/memberships" component={ActiveMembershipsView} />
          </Switch>
          <TabBarRouter />
        </ContentContext.Provider>
      </Router>
    )}
  </React.Fragment>
);
  performAuthentication(obj) {
    this.setState({
      isAuthenticating: true,
    }, () => {
      setTimeout(() => {
        this.setState({
          isAuthenticating: false,
          isAuthenticated: true,
        });
      }, 2000);
    });
  }