React JS React-router-dom 导航不工作
React JS React-router-dom Navigate not working
我尝试在我的 React 应用程序中登录后重定向用户,但导航不起作用,我不知道为什么...
这是我的代码,感谢您的帮助
import React, { Component } from "react";
import {Route, Navigate} from 'react-router-dom';
import Bouton from "../components/Bouton";
class Dallan extends Component{
logout = () =>{
localStorage.removeItem('logged');
return <Navigate to= '/login' />;
}
render(){
return(
<Bouton typeBtn = 'btn-danger' click={() => this.logout()}>Deconnexion</Bouton>
)
}
}
export default Dallan;
在我的 App.js
function App() {
let session = localStorage.getItem('logged');
return (
<BrowserRouter>
<Routes>
<Route path="/" element={session ? <Navigate to="/dallan" /> : <Login/>} />
<Route path='/dallan' element={<Dallan/>}/>
</Routes>
</BrowserRouter>
);
}
export default App;
如果您使用的是 React 路由 dom v6,我假设您使用的是 <Navigate />
,那么 <Navigate />
是一个需要渲染才能工作的组件。您只是将其归还为空,因此它显然不会呈现。您想改用 useNavigate()
挂钩。但是你会想要使用函数组件来使用钩子。像这样:
import React, { Component } from "react";
import {Route, useNavigate} from 'react-router-dom';
import Bouton from "../components/Bouton";
function Dallan() {
const navigate = useNavigate();
const logout = () =>{
localStorage.removeItem('logged');
navigate('/login')
}
return(
<Bouton typeBtn = 'btn-danger' click={() => logout()}>Deconnexion</Bouton>
)
}
export default Dallan;
我尝试在我的 React 应用程序中登录后重定向用户,但导航不起作用,我不知道为什么...
这是我的代码,感谢您的帮助
import React, { Component } from "react";
import {Route, Navigate} from 'react-router-dom';
import Bouton from "../components/Bouton";
class Dallan extends Component{
logout = () =>{
localStorage.removeItem('logged');
return <Navigate to= '/login' />;
}
render(){
return(
<Bouton typeBtn = 'btn-danger' click={() => this.logout()}>Deconnexion</Bouton>
)
}
}
export default Dallan;
在我的 App.js
function App() {
let session = localStorage.getItem('logged');
return (
<BrowserRouter>
<Routes>
<Route path="/" element={session ? <Navigate to="/dallan" /> : <Login/>} />
<Route path='/dallan' element={<Dallan/>}/>
</Routes>
</BrowserRouter>
);
}
export default App;
如果您使用的是 React 路由 dom v6,我假设您使用的是 <Navigate />
,那么 <Navigate />
是一个需要渲染才能工作的组件。您只是将其归还为空,因此它显然不会呈现。您想改用 useNavigate()
挂钩。但是你会想要使用函数组件来使用钩子。像这样:
import React, { Component } from "react";
import {Route, useNavigate} from 'react-router-dom';
import Bouton from "../components/Bouton";
function Dallan() {
const navigate = useNavigate();
const logout = () =>{
localStorage.removeItem('logged');
navigate('/login')
}
return(
<Bouton typeBtn = 'btn-danger' click={() => logout()}>Deconnexion</Bouton>
)
}
export default Dallan;