ホームページ > 記事 > ウェブフロントエンド > React Router v6 でクラスコンポーネントからプログラムでリダイレクトする方法は?
問題:
React Router v6 のクラス コンポーネントから別のルートにプログラムでリダイレクトしようとすると、次のエラーが発生する場合があります:
TypeError: Cannot read properties of undefined (reading 'push')
このエラーは、v6 のクラス コンポーネントでは navigate prop が使用できないために発生します。 。代わりに、関数コンポーネントにのみアクセスできます。
解決策:
この問題を解決するには、2 つの方法があります:
クラス コンポーネントを関数コンポーネントに変換します。
カスタム withRouter HOC を作成します:
import withRouter from './withRouter'; // Change this to the path of your custom HOC file export default withRouter(AddContacts);
これにより、ナビゲートが提供されます。
追加の注意:
React Router v6 では、ナビゲーション関数はオブジェクトではなくなり、ターゲット パスを次のように取り込む関数になりました。最初の引数と 2 番目の引数としてのオプションのオプション オブジェクト。
interface NavigateFunction { ( to: To, options?: { replace?: boolean; state?: State } ): void; (delta: number): void; }
これは、ナビゲーションの構文も変更されたことを意味します。 navigate を使用してルートに移動するには、次のように関数を呼び出します。
// Example usage this.props.navigate("/");
上記のいずれかの解決策に従うことで、React Router v6 の別のルートにプログラムでリダイレクトできるようになります。
以上がReact Router v6 でクラスコンポーネントからプログラムでリダイレクトする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。