首页 > web前端 > js教程 > 如何修复 React Router v6 中的'TypeError:无法读取未定义的属性(读取'push”)”错误?

如何修复 React Router v6 中的'TypeError:无法读取未定义的属性(读取'push”)”错误?

Patricia Arquette
发布: 2024-11-01 14:41:02
原创
1026 人浏览过

How to Fix

在 React Router v6 中以编程方式导航

React Router v6 中的编程导航可能会出现“TypeError:无法读取未定义的属性(正在读取 '推')”错误。当尝试从不存在的未定义的导航属性进行导航时,会发生这种情况。

原因:

useNavigate 挂钩是为函数组件设计的。类组件需要自定义高阶组件 (HOC) 或转换为函数组件。

解决方案 1:转换为函数组件

将 AddContacts 转换为函数组件并使用useNavigate:

<code class="javascript">import { useNavigate } from "react-router-dom";

const AddContacts = () => {
  const navigate = useNavigate();

  const onSubmit = (e) => {
    // ... submit logic ...
    navigate("/");
  };

  return (
    // ... form elements ...
  );
};</code>
登录后复制

解决方案 2:自定义 withRouter HOC

创建自定义 withRouter HOC:

<code class="javascript">const withRouter = (WrappedComponent) => (props) => {
  const navigate = useNavigate();

  return (
    <WrappedComponent {...props} navigate={navigate} />
  );
};</code>
登录后复制

并使用 HOC 包装 AddContacts :

<code class="javascript">export default withRouter(AddContacts);</code>
登录后复制

更新了导航语法

在 React Router v6 中,导航函数的语法发生了变化:

<code class="javascript">navigate(to, options?);
// where to is the target path and options is an optional object with replace and/or state</code>
登录后复制

因此,导航语句变为:

<code class="javascript">this.props.navigate("/");</code>
登录后复制

通过使用这些解决方案,您可以在 React Router v6 中以编程方式有效导航,并避免未定义的导航错误。

以上是如何修复 React Router v6 中的'TypeError:无法读取未定义的属性(读取'push”)”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板