Reactはルーティングを使用してログインインターフェースにリダイレクトします

Reactはルーティングを使用してログインインターフェースにリダイレクトします

前回の記事では、webpack と react 環境を設定した後、ログイン インターフェースとその後のホームページへのジャンプ機能の作成を開始しました。

1. まず、全体的なディレクトリ構造を確認します。

他の人が書いた例を見ていると、ディレクトリ構造に馴染みがないために予期しない問題が発生することがよくあります。

全体的なディレクトリ構造

2. 一般的なプロセス:

1) webpack 構成エントリ ファイル src/index.js
2) index.htmlを実行した後、まずエントリファイルsrc/index.jsをロードします。
3) ルーティングテーブルをロードする src/router/index.js
4) ルーティングテーブルの設定に従って、ログインインターフェースsrc/login.jsが最初にロードされます。
5) ログインインターフェースに正常にログインしたら、src/components/myView.jsに移動します。
6) myView ファイルの左側のメニューをクリックすると、指定されたページ (すべてルーティング テーブルで設定されている) が表示されます。

3. HTML ファイルを作成します。

その中で、1) id myContent は、作成したコンポーネントを配置するために使用されます。
2) スクリプトに読み込まれるファイルは、webpack によってパッケージ化された js ファイルです。

<本文>
 <div id="myContent"></div>
 <script src="./dist/bundle.js"></script>
</本文>

4. ログインインターフェースはlogin.jsで記述されています

1) 必要なモジュールを導入する: antd (Ant Design) はコンポーネント ライブラリであり、プロジェクトで使用されるすべてのコンポーネントはそこから取得されます。 (https://ant.design/index-cn) (antd.cssが導入されていない場合、インターフェースにスタイルが表示されません)

'react' から React をインポートします
'antd' から {Form,Input,Icon,Button} をインポートします。
// 'react-dom' から {render} をインポートします
// 'axios' から axios をインポート

import '../node_modules/antd/dist/antd.css' //このファイルをインポートしないと、antd スタイルは表示されません import './style/login.css';

2) ログインフォームコンポーネントを作成します。基本的な Form、Input、Button コンポーネントに加えて、ジャンプ機能を実装するための主な関数は history.push('/View'); (history = this.props.history;) です。push 関数内のパスはルーティング テーブル () で設定されているパスであり、この 2 つは対応している必要があります。

クラスLoginFromはReact.Componentを拡張します{
 コンストラクタ(){
 素晴らしい()
 }

 ハンドル送信 = (e) => {
 //送信する前に、入力フィールドにエラーがないか確認します。e.preventDefault();
 
 **history = this.props.history; とします。**
 this.props.form.validateFields((エラー、値)=>{
  if (!エラー) {
  console.log('フォームの受信値: ', values);
  **history.push('/View');**
  }
 })
 }

 与える(){
 //Form.create でラップされたコンポーネントには、独自の this.props.form プロパティがあり、次の 4 つを含む一連の API が提供されます //getFieldDecorator は、フォームとの双方向バインディングに使用されます //isFieldTouched は、入力コントロールが getFieldDecorator の値収集タイミングを経験したかどうかを判断します options.trigger (子ノードの値を収集するタイミング、デフォルトは onChange)
 //getFieldErrorは入力コントロールのエラーを取得します
 // 入力コントロールのグループのエラーを取得します。パラメータが渡されない場合は、すべてのコンポーネントのエラーが取得されます。
 const { getFieldDecorator、getFieldsError、getFieldError、isFieldTouched } = this.props.form;
 const userNameError = isFieldTouched('userName') && getFieldError('userName');
 const passWordError = isFieldTouched('password') && getFieldError('password');
 戻る (
  <div className="ログイン">
  <div className="ログインフォーム">
   <div className="ログインロゴ">
   <div className="ログイン名">MSPA</div>
   </div>
   <フォーム onSubmit={this.handleSubmit}>
   {/* getFieldDecorator でデコレートされた子を FromItem に配置します */
   <フォーム.アイテム
    validateStatus={userNameError ? 'error' : ''} //validateStatus は検証ステータスです。設定されていない場合は、検証ルールに従って自動的に生成されます。オプション: 'success' 'warning' 'error' 'validating'
   >
   {
    getFieldDecorator('ユーザー名',{
    ルール:[{required:true,message:"ユーザー名を入力してください!"}]
    })(
    <入力プレフィックス={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)' }}/>}
     placeholder="ユーザー名"
    />
    )
   }
   </フォーム.アイテム>
   <フォーム.アイテム
    検証ステータス={passWordError ? "エラー" : ''}
   >
   {
    getFieldDecorator('passWord',{
    ルール:[{required:true,message:"パスワードを入力してください!"}]
    })(
    <入力プレフィックス={<アイコン type="lock" style={{ color: 'rgba(0,0,0,.25)' }}/>}
     プレースホルダー="パスワード"
    />
    )
   }
   </フォーム.アイテム>
   <フォーム.アイテム>
    <ボタン
    タイプ="プライマリ"
    htmlType="送信"
    無効 = {hasErrors(getFieldsError)}
    >ログイン</ボタン>
   </フォーム.アイテム>
   </フォーム>
  </div>
  </div>
 )
 }
}
LoginForm を Form.create() に設定します。
デフォルトのLoginFormをエクスポートします。

3. 2 番目のステップでは静的ページを記述しました。次のステップはルーティング テーブルを構成することです**。 **ルーターフォルダ内のindex.jsにルーティング情報を設定しました。 react-router の中国語ドキュメント (https://react-guide.github.io/react-router-cn/) では、歴史の簡単な紹介を参照できます (https://www.jb51.net/article/208929.htm)。これは比較的簡単にすぐに理解できます。


コードは次のとおりです。最初の 3 行で導入されたモジュールは基本モジュールであり、後でインポートされたモジュールは事前に作成されたコンポーネントです。ホームページにはログイン インターフェイスが表示され、ログインが成功すると myView インターフェイスにジャンプします。myPicture と myDocument は、myView インターフェイスをクリックした後に表示されるコンポーネントです。 (ネストされたルート)

'react' から React をインポートします
'react-router-dom' から {HashRouter を Router 、 Route 、 Switch としてインポートします。
「history」から createBrowserHistory をインポートします。

'../components/myView.js' から MyView をインポートします。
'../login.js' から LoginModule をインポートします。
'../components/myPicture' から MyPicture をインポートします。
'../components/myDocument.js' から MyDocument をインポートします。

デフォルトクラスMyRouteをエクスポートし、React.Componentを拡張します{
 与える(){
 戻る(
  <ルーター履歴={createBrowserHistory()}>
  <スイッチ>
   <ルートの正確なパス="/" コンポーネント={LoginModule}/>
   <MyView パス='/View' コンポーネント={MyDocument}>
   <ルート パス="/View/abc" コンポーネント={MyDocument} />
   <ルート パス="/View/myPicture" コンポーネント={MyPicture} /> 
   </マイビュー> 
  </スイッチ>
  </ルーター>
 )
 } 
}

4. 次に、src フォルダー内の index.js (プログラムのエントリ ファイル) ファイルに次のコードを記述します。

'./router/index.js' から MyRoute をインポートします。
'react-dom' から {render} をインポートします。
'react' から React をインポートします
与える(
 <マイルート />, 
 ドキュメントの要素IDを取得する('myContent')
);

5. プログラムテストの結果は次のとおりです。

1) ログインインターフェース (login.js):


2) ユーザー名とパスワードを入力し、ログイン ページ (myView.js) をクリックします。

ここに画像の説明を挿入

React ルーティングを使用してログイン インターフェースにリダイレクトする方法についての記事はこれで終わりです。React ルーティングを使用してログイン ページにリダイレクトする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • React+Ant Design開発環境をセットアップするための実装手順
  • ViteでReactプロジェクトを構築する方法
  • 入力ボックスの値を取得する方法のReactの例
  • Reactはラジオコンポーネントのサンプルコードを実装します
  • React Contextの理解と応用についてお話ししましょう
  • Reactフック入門チュートリアル
  • React と Threejs を使用して VR パノラマ プロジェクトを作成する詳細なプロセス
  • React Routerの歴史について簡単に説明します
  • Redux Toolkit で Redux を簡素化する方法

<<:  MySQL 5.7 でパスワードを変更する簡単な方法

>>:  dockerでnginxを実行するときにdaemon offが使用される理由についての簡単な説明

推薦する

mysqlタイムスタンプの使用

序文:タイムスタンプ フィールドは、MySQL でよく使用されます。たとえば、データ行が作成または変...

Nginxはリバースプロキシを使用して負荷分散プロセス分析を実装します

導入dockerコンテナとdocker-composeに基づいて、Linux環境でのdockerの基...

JavaScript カウントダウン プロンプト ボックス

この記事の例では、カウントダウンプロンプトボックスを実装するためのJavaScriptの具体的なコー...

Dockerでデータディレクトリを移行する方法

目次ディスク使用量の表示ディスク クリーンアップ (軽々しく使用しないでください)データの移行ディス...

jQueryはドロップダウンメニューのスライド効果を実現します

Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...

MySQL 内部結合の使用例 (必読)

文法規則 列名を選択 テーブル名1から INNER JOIN テーブル名2 ON テーブル名1.列名...

CSS でフローティングにより親要素の高さが崩れる問題を解決するいくつかの方法

1. ドキュメントフローとフローティング1. ドキュメントフローとは何ですか? HTML では、ドキ...

MySQLのスイッチングデータ保存ディレクトリの実装方法

MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...

MySQL 8.0 オンライン DDL クイック列追加の概要

目次問題の説明MySQLオンラインDDLで列を追加する従来の方法01 コピー方法02 インプレースメ...

CSS の flex と inline-flex の違いの詳細な説明

inline-flex は inline-block と同じです。内部要素用の display:fl...

バッチモードでtopコマンドを実行する方法

top コマンドは、Linux システムのパフォーマンスを監視するために誰もが使用している最適なコマ...

Dockerコンテナ内の設定ファイルの変更の実装

1. コンテナに入るdocker run [オプション] イメージ名 [起動コンテナに渡されるコマン...

ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト

ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト 1...

レスポンシブデザインについて知っておくべきこと

レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...

Vue ルーティング遅延読み込みの詳細

目次1. ルートの遅延読み込みとは何ですか? 2. ルートの遅延読み込みの使用1. ルートの遅延読み...