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が使用される理由についての簡単な説明

推薦する

openlayers6のマップオーバーレイの詳細な説明

1. オーバーレイの概要オーバーレイとは、その名の通り、別の形で地図上に表示される、覆うことを指しま...

MySQLのExcelへのエクスポート方法の分析

この記事では、MySQL を使用してデータを Excel にエクスポートする方法について説明します。...

MySql 5.6.36 64 ビット グリーン バージョンのインストール グラフィック チュートリアル

MySQL のインストールについてはインターネット上に多くの記事がありますが、今日ノート PC にイ...

Vue で @person 関数を実装する方法

この記事ではvueを使用し、マウスクリックイベントといくつかの小さなページの最適化を追加します。 基...

Vueベースのビデオプレーヤーの実装例

既存のビデオ プレーヤーがニーズを満たせない場合は、ビデオを自分でカプセル化する必要があります。ビデ...

Vueはボールのスライディングクロス効果を実現します

この記事の例では、ボールのスライドとクロスの効果を実現するためのVueの具体的なコードを共有していま...

MySQLの使用中に発生した問題

ここでは、MySQL の使用中に発生するいくつかの問題とその解決策を示します。 sql_mode=o...

Linux usermod コマンドの使用

1. コマンドの紹介usermod (ユーザー変更) コマンドは、ユーザー アカウントを変更するため...

Vue3とTypeScriptを組み合わせたプロジェクト開発の実践記録

目次概要1. コンポジションAPI 1. ref と reactive の違いは何ですか? 2. 周...

Centos7 環境でバイナリ インストール パッケージから mysql5.6 をインストールする方法の詳細な説明

この記事では、centos7 環境でバイナリ インストール パッケージを使用して mysql5.6 ...

Vueはページに透かし効果を追加する機能を実装します

最近、あるプロジェクトに取り組んでいたとき、ページに透かし効果を追加するように依頼されました。さっそ...

Ubuntu システムにおける Mysql ERROR 1045 (28000): ユーザー root@localhost へのアクセスが拒否される問題の解決方法

最初の方法: skip-grant-tables: 非常に便利なmysql起動パラメータ非常に便利な...

数千万データを持つMySQLテーブルを最適化する実践記録

序文まずここで説明させてください。インターネット上では、Alibaba では 500 万のデータを異...

2012年のベストWebデザイン作品レビュー[パート1]

新年の初めに、友人の健康と2013年が素晴らしい年となることを心からお祈りいたします。この記事では、...

html リンク タグ タイトル属性 改行 マウス ホバー プロンプト コンテンツ 改行効果

オブジェクト上にマウスを移動したときにコンテンツ(タイトル属性の内容)を折り返す方法、HTML タイ...