前回の記事では、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が使用される理由についての簡単な説明
序文:タイムスタンプ フィールドは、MySQL でよく使用されます。たとえば、データ行が作成または変...
導入dockerコンテナとdocker-composeに基づいて、Linux環境でのdockerの基...
この記事の例では、カウントダウンプロンプトボックスを実装するためのJavaScriptの具体的なコー...
目次ディスク使用量の表示ディスク クリーンアップ (軽々しく使用しないでください)データの移行ディス...
Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...
文法規則 列名を選択 テーブル名1から INNER JOIN テーブル名2 ON テーブル名1.列名...
1. ドキュメントフローとフローティング1. ドキュメントフローとは何ですか? HTML では、ドキ...
MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...
目次問題の説明MySQLオンラインDDLで列を追加する従来の方法01 コピー方法02 インプレースメ...
inline-flex は inline-block と同じです。内部要素用の display:fl...
top コマンドは、Linux システムのパフォーマンスを監視するために誰もが使用している最適なコマ...
1. コンテナに入るdocker run [オプション] イメージ名 [起動コンテナに渡されるコマン...
ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト 1...
レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...
目次1. ルートの遅延読み込みとは何ですか? 2. ルートの遅延読み込みの使用1. ルートの遅延読み...