最近Reactを勉強していて、今は仕事でVueを使っています。学習の過程で、両者を比較して理解を深めました。 以下は react におけるナレッジポイントのごく一部ですが、個人的には比較的一般的なナレッジポイントでもあると思います。 react コンポーネントが通信する方法の 1 つに、ルーティングパラメータの送信があります ( react コンポーネントが通信する方法は、 props、イベントコールバック、コンテキスト、ルーター、redux、キャッシュなど、数多くあります)。現在、シングルページSPAが広く使用されています。ページ全体を更新せずに一部のページにジャンプするには、ルーティングジャンプを使用する必要があります。また、ページ間のジャンプに加えて、Reactルーティングには、ページまたはコンポーネントを切り替えるときにパラメータを渡すという優れた機能もあり、コミュニケーションの目的を達成できます。 簡単な例を使って、Reactルーティングがどのようにジャンプしてパラメータを渡すかを説明しましょう(この記事ではルーティングパラメータの渡し方に焦点を当てており、ルーティング設定や関連属性については今のところ説明しません) 準備、ルーティング依存関係のインストール: npm インストール -S react-router-dom 次に、ページにルートを導入します。 './component/ManageSystem' から Home をインポートします。 'react-router-dom' から { BrowserRouter を Router としてインポートします。 関数App() { 戻る ( <Router> //ルート パッケージ。ホームページ内の 1 つ以上のページでルートの切り替えが必要になる場合があります <div id="App"> <ホーム /> </div> </ルーター> ); } デフォルトアプリをエクスポート ManageSystem.js の一部では、ルーティングによって表示内容を切り替える必要があります。Route は切り替える必要があるコンポーネント、path はルーティング パス、exact は完全一致、Link はリンク、to は Route 内のパスに対応するジャンプのルーティング パスを表し、Redirect はリダイレクトです。 'react' から React をインポートします。 '../utils/loadable' から Loadable をインポートします 「react-router-dom」から {Route、Link、withRouter、Redirect、Switch} をインポートします。 'element-react' から Button をインポートします。 // 最初の画面のレンダリングを高速化するためにコンポーネントを動的にロードします const About = Loadable(() => import('./About.js')) const Users = Loadable(() => import('./Users.js')) クラス Home は React.Component を拡張します { 与える() { 戻る ( <div style={{ position: 'relative' }}> <nav style={{ position: 'absolute', top: '0', left: '60%' }}> <ul> <li style={{ marginBottom: '10px' }}> <Link to={{pathname:"/home/about",query:{ text: '666' }}}>概要</Link> </li> <li> <Link to={{pathname:"/home/users/999",state:{ text: '888' }}}>ユーザー</Link> </li> </ul> </nav> <div style={{ position: 'absolute', top: '20px', right: '20px' }}> <スイッチ> <ルートの正確なパス="/home" コンポーネント={() => { return null }}> </ルート> <ルートの正確なパス="/home/about" コンポーネント={About}> </ルート> <ルートの正確なパス="/home/users/:id" コンポーネント={Users}> </ルート> <リダイレクト元="/" to='/home' /> </スイッチ> </div> </div> ); } } /* 高レベルコンポーネントの withRouter は、コンポーネントを Route にラップするために使用されます。 次に、 react-router、 history、 location、 match の 3 つのオブジェクトがこのコンポーネントの props 属性に配置されます。 */ ルータ(ホーム)でデフォルトをエクスポート ここからがポイントです! ! ! ルートを切り替える場合、パラメータを渡す主な方法は3つあります。パス動的パス、クエリ、状態です。 まず、パス動的パス方式では、パスを設定するときに、アドレスに動的パラメータが追加されます。次の動的パラメータは次のとおりです。id <ルートの正確なパス="/home/users/:id" コンポーネント={Users}> </ルート> ページを切り替えたりジャンプしたりする場合は、次のように、送信する情報をアドレスの後に配置します。 <Link to={{pathname:"/home/users/999"}}>ユーザー</Link> Usersに切り替えるときに、matchを使用して渡された情報を取得できます。Users.jsは次のとおりです。 「react」からReactをインポートします。 クラスUsersはReact.Componentを拡張します。 コンストラクタ(props) { スーパー(小道具) この状態 = { id: this.props.match.params.id //ここでパス動的パラメータスプライシングを介して渡された情報を取得します} } コンポーネントマウント(){ console.log(this.props,'ユーザーのプロパティ') } 与える() { 戻る ( <div> <span>私はユーザーです: {this.state.id}</span> </div> ) } } デフォルトユーザーをエクスポート 取得: this.props.match.params.id 小道具を印刷して内容を確認することができます。小道具に情報が存在するかどうかを見つけるのは難しくありません。 対応するプログラムジャンプは次のようになります。 <button onClick={() => { this.props.history.push({ pathname: '/home/users/999' }) }}>について</button> //同様に、this.props.match.params.idを使用して値を取得します 2番目のパラメータ渡し方法はクエリであり、クエリパラメータを通じて情報を渡します。 <Link to={{pathname:"/home/users",query:{ text: '666' }}}>ユーザー</Link> 取得: this.props.location.query.text 同様に印刷して見てください 対応するプログラムジャンプは次のとおりです。 <button onClick={() => { this.props.history.push({ pathname: '/home/users/999', query: { text: '666' } }) }}>ユーザー</button> //同様に、メソッドthis.props.location.query.textを取得します 3 番目のパラメータ渡し方法はstateで、パラメータ state を通じて情報を渡します。使い方は query と同じです。 <Link to={{pathname:"/home/users",state:{ text: '666' }}}>ユーザー</Link> 取得: this.props.location.state.text 同様に印刷して見てください 対応するプログラムジャンプは次のとおりです。 <button onClick={() => { this.props.history.push({ pathname: '/home/users/999', state: { text: '666' } }) }}>ユーザー</button> //同様に、メソッドthis.props.location.state.textを取得します ps:クエリと状態には重要な違いがあります。つまり、ページがジャンプした後、現在のページを更新すると、クエリは消えますが、状態は消えません。つまり、その場所にまだ保存されています。 テストして、Users.js ページを変更してみましょう。クエリが存在しない場合は、「クエリが消えました」と表示されます。 「react」からReactをインポートします。 クラスUsersはReact.Componentを拡張します。 コンストラクタ(props) { スーパー(小道具) この状態 = { テキスト: this.props.location.query ? this.props.location.query.text : 'クエリが消えました' } } コンポーネントマウント(){ console.log(this.props,'ユーザーのプロパティ') } 与える() { 戻る ( <div> <span>私はユーザーです: {this.state.text}</span> </div> ) } } デフォルトユーザーをエクスポート ジャンプすると、データが正常に取得され、クエリが存在する 現在のページを更新するとクエリは消えます ページには 同じプロセスで、状態パラメータを渡す方法が使用されます。現在のページを更新しても、場所の状態は消えません。状態メソッドが推奨されます。 概要: この記事では主に、React ルーティング ジャンプでパラメータを渡す 3 つの方法について説明します。プロジェクト内のページ ジャンプでジャンプ先のページに特定の情報を渡す必要がある場合は、これらの方法を検討してください。違い:動的アドレス方式はシンプルですが、パラメータ渡し方式は単一で、アドレスにのみ綴ることができ、文字列です。送信される情報が長すぎると、アドレスが乱雑に見え、情報が公開されます。クエリの場合、パラメータ渡し方式は状態と同じですが、1つだけ違いがあります。現在のページにジャンプして更新すると、クエリは消えますが、状態は消えません。 Vue でのルーティング パラメータの受け渡し方法を比較します。 Vue コンポーネント間の通信方法 (複数のシナリオ、わかりやすい、コレクションに推奨) React コンポーネント通信 - ルーティングパラメータの受け渡し (react-router-dom) に関するこの記事はこれで終わりです。React ルーティングパラメータの受け渡しに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: docker ログ - docker コンテナ ログの実装を表示します
>>: HTML&CSS&JS 互換性ツリー (IE、Firefox、Chrome)
1. 要件Vue.js フレームワークを使用してフロントエンド プロジェクトを開発する場合、サーバ...
序文データの一貫性と整合性を確保するために、あらゆるデータベースにはロック メカニズムが備わっていま...
序文私は多くのブログを読み、弊社の DBA を含む多くの人々が、MySql では列に null が含...
1. HTML の要素とタグ<br />要素は、1 つのタグまたは 1 組のタグによって...
display: flex レイアウトに関しては、深く理解している人もいますし、私も他の人の作業か...
1. 準備Linux オペレーティング システムをインストールした後、ここで Linux 7 を選択...
水平方向では、テーブルの配置を左、中央、右に設定できます。基本的な構文<テーブル配置=&quo...
ネイティブJavaScriptでスキニングを実装するための具体的なコードは参考までに。具体的な内容は...
目次概要ブロブBlob の動作BLOB ダウンロード ファイルブロブ画像のローカル表示BLOB ファ...
色のコントラストと調和対照的な状況では、色の相互作用は単一の色によって与えられる感覚とは異なります。...
図書館運営クエリ1.SHOW DATABASE; ----すべてのデータベースを照会する2. SHO...
序文簡単に言えば、tcpdump は、ネットワーク上のトラフィックをダンプし、ユーザーの定義に従って...
序文最近、仕事の都合で、APP ショッピングカートの注文支払いに取り組んでいました。テスト中にバグが...
1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...
123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...