Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React路由器dom不呈现条件路由(登录和身份验证)_Javascript_Reactjs_Firebase_Firebase Authentication_React Router Dom - Fatal编程技术网

Javascript React路由器dom不呈现条件路由(登录和身份验证)

Javascript 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){ 路由=; }否则{ 路由=;

我有一个登录页面和一个身份验证页面(私人页面)。我有条件地呈现它们,因此当用户进行身份验证时,它会重定向它以呈现该路由,而不是登录路由

问题是,当我在URL中放入/settings(用户的身份验证)时,它不会呈现它,而是将我重定向到/404(当它发现路由不存在,但该路由存在时,我会这样做)

文件中有以下代码:

//App.js

。。。
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>
    );
  }