ホームページ >ウェブフロントエンド >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: Cannot read property of unknown (reading 'プッシュ')」エラー。これは、存在しない未定義の navigate prop から移動しようとすると発生します。

原因:

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>

そして、AddContacts を HOC でラップします:

<code class="javascript">export default withRouter(AddContacts);</code>

更新されたナビゲーション構文

React Router v6 では、navigate 関数の構文が変更されました:

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。