前回の記事では、webpack と react 環境を設定した後、ログイン インターフェースとその後のホームページへのジャンプ機能の作成を開始しました。 1. まず、全体的なディレクトリ構造を確認します。他の人が書いた例を見ていると、ディレクトリ構造に馴染みがないために予期しない問題が発生することがよくあります。 2. 一般的なプロセス: 1) webpack 構成エントリ ファイル src/index.js 3. HTML ファイルを作成します。その中で、1) id myContent は、作成したコンポーネントを配置するために使用されます。 <本文> <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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 5.7 でパスワードを変更する簡単な方法
>>: dockerでnginxを実行するときにdaemon offが使用される理由についての簡単な説明
目次1.1. MySQL binlog を有効にする1.2. RabbitMQ の交換とキューを構成...
1 hupからイメージを取得する docker プル nginx 2 マウントするディレクトリを作成...
目次2. 試した方法2.1 キープアライブ2.2 ネストされたルートを持つ CSS 3. 機能説明4...
Dockerfileを初期化するプロジェクトの名前が express であると仮定して、expres...
以下では、よく使われるヘッド構造と、各タグや要素の意味や使用シーンを紹介します(この記事は、Yisi...
1. VMware vSphere の概要VMware vSphere は、業界をリードする最も信...
非直交マージンマージンを使用するとマージが発生します次のプロパティはマージンの結合を防止します。国境...
2 日前、Raspberry Pi サーバーを Ubuntu 20 にアップグレードしました。今日...
序文デモでは古いバージョンのブラウザのグラデーションが実装されています[IE9-]。 IE9 より前...
1. 既存のモジュールを表示する nginx の sbin ディレクトリに nginx の sbin...
1. はじめにMySQL グループ レプリケーション (略して MGR) は文字通り MySQL グ...
今日、WordPress がデータベースに接続できないことがわかりました。ウィンドウ サーバーにログ...
序文最近、C++ 動的ライブラリをテストするためにロボット フレームワークを使い始めました。ロボット...
アプリケーションシナリオ1: ドメイン名ベースのリダイレクト会社の古いドメイン名は www.accp...
最近、画像はあるのに外部画像リソースが参照されていないウェブページを見つけました。気になりました。コ...