Javascript React路由器dom不呈现条件路由(登录和身份验证)
我有一个登录页面和一个身份验证页面(私人页面)。我有条件地呈现它们,因此当用户进行身份验证时,它会重定向它以呈现该路由,而不是登录路由 问题是,当我在URL中放入/settings(用户的身份验证)时,它不会呈现它,而是将我重定向到/404(当它发现路由不存在,但该路由存在时,我会这样做) 文件中有以下代码: //App.jsJavascript React路由器dom不呈现条件路由(登录和身份验证),javascript,reactjs,firebase,firebase-authentication,react-router-dom,Javascript,Reactjs,Firebase,Firebase Authentication,React Router Dom,我有一个登录页面和一个身份验证页面(私人页面)。我有条件地呈现它们,因此当用户进行身份验证时,它会重定向它以呈现该路由,而不是登录路由 问题是,当我在URL中放入/settings(用户的身份验证)时,它不会呈现它,而是将我重定向到/404(当它发现路由不存在,但该路由存在时,我会这样做) 文件中有以下代码: //App.js 。。。 render(){ 让路由; 如果(!this.state.loading_auth){ if(this.state.auth){ 路由=; }否则{ 路由=;
。。。
render(){
让路由;
如果(!this.state.loading_auth){
if(this.state.auth){
路由=;
}否则{
路由=;
}
}else if(this.props.loading | | this.state.loading_auth){
路由=加载。。。;
}
返回{路由};
}
...
./Dashboard.js
。。。
render(){
返回(
(
找不到页面,身份验证,返回主页
)}
/>
);
/Init.js
。。。
render(){
返回(
(
未找到页面,未进行身份验证,请返回主页
)}
>
);
}
我哪里做错了?谢谢您的回答:)我已经检查了您的代码。具有
/settings
路由的经过身份验证的用户将加载设置页面!但是,未经身份验证的用户转到了404页。是否希望未经身份验证的用户呈现登录页?当用户经过身份验证时,它不会呈现/设置,这就是问题所在,它会重定向到/404。即使用户已通过身份验证。请检查此示例。我已检查了您的代码。具有/settings
路由的经过身份验证的用户将加载设置页面!但是,未经身份验证的用户转到了404页。是否希望未经身份验证的用户呈现登录页?当用户经过身份验证时,它不会呈现/设置,这就是问题所在,它会重定向到/404。即使用户已通过身份验证。请检查此示例
...
render() {
let Routing;
if (!this.state.loading_auth) {
if (this.state.auth) {
Routing = <Dashboard auth={this.state.auth} />;
} else {
Routing = <Init auth={this.state.auth} />;
}
} else if (this.props.loading || this.state.loading_auth) {
Routing = <h1>Loading...</h1>;
}
return <BrowserRouter>{Routing}</BrowserRouter>;
}
...
...
render() {
return (
<div>
<Navbar />
<Switch>
<Route exact path="/">
<MainPage auth={this.props.auth} />
</Route>
<Route path="/settings">
<Settings />
</Route>
<Route
path="/404"
render={() => (
<h1>
Page not found, auth, go <Link to="/">home</Link>
</h1>
)}
/>
<Redirect from="*" to="/404" />
</Switch>
</div>
);
...
render() {
return (
<div>
<Navbar />
<Switch>
<Route exact path="/">
<LandingPage />
</Route>
<Route path="/login">
<LoginPage />
</Route>
<Route path="/signup">
<SignupPage />
</Route>
<Route path="/forget">
<Forget />
</Route>
<Route
path="/404"
render={() => (
<h1>
Page not found, not auth, go <Link to="/">home</Link>
</h1>
)}
></Route>
<Redirect from="*" to="/404" />
</Switch>
</div>
);
}