Javascript 海关;“私人路线”;返回React路由器路由| |重定向的组件会导致不变冲突
我有如下功能,如React Router Docs中所示,唯一的例外是我正在使用传递给组件的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 ?
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);
});
}