微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试使用React路由器重定向React

如何解决尝试使用React路由器重定向React

所以我有一个我似乎无法解决错误。目前,我正在使用react路由器和react路由器,但是我似乎无法获得react重定向页面的操作。这是我代码中的专家(请记住,这是一个功能组件)

<Route path="/login">
  <Login
    onSubmit={(user) => {
      login(user,(status) => {
        if (status == 200) {
          history.push('/home');
        } else {
          history.push('/login');
        }
      });
    }}
  />
</Route>

(作为参考,我有一个登录组件,该组件接受onSubmit回调,并在其中调用预定义的登录方法以检查来自后端的响应状态并进行相应的重定向

运行此代码重定向时,出现错误消息

Unhandled Rejection (TypeError): Cannot read property 'push' of undefined

为了清楚起见,我在组件的前几行中定义了历史记录

let history = useHistory();

任何帮助将不胜感激!

解决方法

您可以使用Redirect中的react-router-dom

import {  Redirect } from "react-router-dom";

...

<Route path="/login">
  <Login
    onSubmit={(user) => {
      login(user,(status) => {
        if (status == 200) {
           return <Redirect to="/home" />
        } else {
          return <Redirect to="/login" />
        }
      });
    }}
  />
</Route>
,

history解析为undefined,因此您尝试调用undefined.push('path'),因此出错。您需要像这样在组件的范围内使history可以访问:

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

const App = () => (
const history = useHistory()
return <Login onSubmit={() => history.push('/path')} />
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?