ホームページ >ウェブフロントエンド >jsチュートリアル >ミックスインを使用せずに React Router をプログラムでナビゲートするにはどうすればよいですか?

ミックスインを使用せずに React Router をプログラムでナビゲートするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-19 21:16:09865ブラウズ

How to Programmatically Navigate in React Router without Mixins?

Mixins を使用しない React Router でのプログラムによるナビゲーション

React Router を使用すると、コンテキスト内のシームレスなナビゲーションが可能になりますが、その使用法を理解するのは混乱する可能性があります。ミックスインを使用せずにプログラムでナビゲートする方法を見てみましょう。

React Router はコンテキストを通じて履歴オブジェクトを提供し、操作のためのプッシュ メソッドと置換メソッドへのアクセスを提供します。ただし、React の進歩により、プログラムによるナビゲーションに複数のオプションが追加されました:

1。 withRouter HOC を利用します (React Router 6 はサポートされていません):

withRouter HOC は履歴オブジェクトをコンポーネント props に挿入し、ナビゲーション メソッドへの直接アクセスを可能にします。

import { withRouter } from 'react-router-dom';

const Button = withRouter(({ history }) => {
  const handleClick = () => { history.push('/new-location'); };
  return <button onClick={handleClick}>Click Me!</button>;
});

2.パスレス ルートのレンダリング (React Router 6 はサポートされていません):

パスなしで Route コンポーネントをレンダリングします。これは常に現在の場所と一致し、履歴プロパティも渡します。

import { Route } from 'react-router-dom';

const Button = () => {
  return (
    <Route render={({ history }) => {
      const handleClick = () => { history.push('/new-location'); };
      return <button onClick={handleClick}>Click Me!</button>;
    }} />
  );
};

3.コンテキストを使用する (複雑かつ非推奨):

このアプローチには、React のコンテキストを深く理解する必要があるため、慎重に使用する必要があります。履歴プロパティにアクセスするには、コンポーネント コンテキスト タイプを定義する必要があります。

import React from 'react';

const Button = (props, context) => {
  const handleClick = () => { context.history.push('/new-location'); };
  return <button onClick={handleClick}>Click Me!</button>;
};

Button.contextTypes = {
  history: React.PropTypes.shape({
    push: React.PropTypes.func.isRequired
  })
};

ほとんどのシナリオでは、オプション 1 と 2 が簡単なので、お勧めします。

以上がミックスインを使用せずに React Router をプログラムでナビゲートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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