为了账号安全,请及时绑定邮箱和手机立即绑定

history.push 与注销图标

history.push 与注销图标

慕虎7371278 2022-05-26 16:48:09
我正在使用材质 ui 图标作为注销按钮。我这样使用它:function logout(props:any){  localStorage.removeItem("token");  return(    <Redirect to="/login" />  )  //props.history.push("/login");} <ExitToAppIcon onClick={logout}></ExitToAppIcon>当我单击该图标时,令牌会从 localStorage 中删除,但它不会重定向到/login页面,如果我使用该行props.history.push("/login");而不是Redirect,页面会崩溃并给我这个错误:TypeError: undefined is not an object (评估'props.history.push')应用程序.tsx:const token = localStorage.getItem('token');export default function App() {  return (    <div>      <BrowserRouter>      <Switch>      <Route exact path='/' component= {HomePage}></Route>      <Route path='/login' component= {LoginPage}></Route>      <PrivateRoute      path='/panel'      isAuthenticated={token}      component={PanelHomePage}      />      <Redirect from='*' to='/404' />      </Switch>      </BrowserRouter>    </div>  );}如何解决重定向问题?
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

我会尝试使用useHistory文档中的钩子:


该useHistory钩子使您可以访问可用于导航的历史实例。


如下所示:


import { useHistory } from 'react-router-dom';


const YourComponent = () => {

   let history = useHistory();


   const logout = () => {

      localStorage.removeItem('token');


      history.push('/login');

   }


   /* rest of your component code */


   return (

       { /* your other elements */ }

       <ExitToAppIcon onClick={logout}></ExitToAppIcon>

   )

}

我希望这有帮助!


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信