首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果未登录,则响应路由器重定向

如果未登录,则响应路由器重定向
EN

Stack Overflow用户
提问于 2022-05-19 08:51:35
回答 2查看 1.1K关注 0票数 0

我想打开页面,如果我没有登录,我希望它立即将我重定向到一个注册页面。当我打开应用程序时,即使没有登录,我也不会被重定向,我会被发送到主页,主页上写着欢迎空白,它应该说欢迎user.username (不管这个值被设置为什么),那么为什么if语句不起作用呢?我是一个新的反应路由器,所以如果感谢的话,任何帮助都可以。登录确实有效,通过更改状态,我可以获得所需的结果,但我希望url也能更改。

代码语言:javascript
复制
import SignIn from './components/SignIn';
import Home from './components/Home';
import { BrowserRouter as Router, Route, Routes, Navigate } from 'react-router-dom';
import './App.css';
import { useState, useEffect } from 'react';


function App() {

  const guestUser = {
    username: "guest",
    password: "guest",
  }

  const [user, setUser] = useState({username: "", password: ""})
  const [error, setError] = useState("");
  

  const Login = details => {
      console.log(details);
      if(details.username == guestUser.username && details.password == guestUser.password) {
        console.log("Logged in as guest");
        setUser({
          username: details.username,
          
        })
      } else {
        console.log("details do not match");
        setError("Details do not match.")

      }
  }

  const Logout = () => {
      console.log("logout");
  }



  return (

    <div className="App">
      
      <Router>
        <Routes>
          
          <Route path="/Login" element={<Intro Login={Login} Logout={Logout} error={error}/>} />
          <Route path="/Home" element={<Home user={user}/>}/>
          <Route path="" element={<Home user={user}/>}/>
          
          
          
      
      
          {(user.username !== "") ? ( <Route element={<Navigate to="/Home"/>}/>
          ) : (
            <Route element={<Navigate to="/Login"/>}/>
            
            
          )}
        </Routes>

      </Router>
        
    </div>
     
 
    
  );
}

export default App;
EN

Stack Overflow用户

发布于 2022-05-19 09:37:31

我认为将代码设置为:

代码语言:javascript
复制
 {user.username ? ( <Route element={<Navigate to="/Home"/>}/>
      ) : (
        <Route element={<Navigate to="/Login"/>}/>
        
        
      )}

也许能帮上忙。

如果user.username是false,它将重定向到Login,如果字符串的内容类似于"x“,它将返回true并返回。

编辑:打字

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72301456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档