在每个url路径上重复的JS登录页面

ws51t4hk  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(173)

这是我的代码,我对前端开发完全陌生。有人能帮我解决这个问题吗?我希望用户在未登录的情况下被重定向到登录页面,但一旦登录,一切都应该正常,但即使我单击“登录”,当我更改url时,登录页面也会显示出来,登录页面出现在每个url上这是我的代码(我是新到前端的,请不要判断)

import { useState } from 'react'
import { Route, Switch} from 'react-router-dom'
import Dashboard from "./pages/Dashboard";
import DatasetGenerator from "./pages/DatasetGenerator"
import Simulator from "./pages/Simulator"

function App() {

  const [login, setlogin] = useState(true)
  const [homepage, setHomepage] = useState(false) 
const loginHandler = ()=>{
  if(login == true){setlogin(false)
  setHomepage(true)}
}

  return ( 
    <div>
    {login && <SignIn loginHandler={loginHandler} />}
    <Switch>

      <Route path='/' exact>
        {homepage && <Dashboard />}
      </Route>
      <Route>
      {homepage &&  <DatasetGenerator path="/dataset-generator"/>}
      </Route>

      <Route path="/simulator">
      {homepage &&  <Simulator  />}
      </Route>
    </Switch>
    </div>
  )
  }

export default App;
t0ybt7op

t0ybt7op1#

似乎您希望有条件地呈现登录组件或应用程序的其余部分。自从 login 国家和 homepage 状态似乎是相互排斥的,您可能不需要两者(尽管我们可能缺少一些上下文)。

return ( 
  <div>
    {login ? (
      <SignIn loginHandler={loginHandler} />
    ) : (
      <Switch>
        <Route path='/' exact>
          <Dashboard />
        </Route>
        <Route>
          <DatasetGenerator path="/dataset-generator"/>
        </Route>
        <Route path="/simulator">
          <Simulator  />
        </Route>
      </Switch>
    )}
  </div>
)

更好的解决方案是通过创建经过身份验证的路由组件来实现身份验证工作流,这些组件在未经身份验证的情况下处理重定向到登录路由,否则允许用户访问该路由。

相关问题