首頁 >web前端 >js教程 >如何修復 React Router v6 中的「TypeError:無法讀取未定義的屬性(讀取「push」)」錯誤?

如何修復 React Router v6 中的「TypeError:無法讀取未定義的屬性(讀取「push」)」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-11-01 14:41:021031瀏覽

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>

透過使用這些解決方案,您可以在React Router v6 中以編程方式有效導航,並避免未定義的導航錯誤。
<code class="javascript">this.props.navigate("/");</code>

以上是如何修復 React Router v6 中的「TypeError:無法讀取未定義的屬性(讀取「push」)」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn