説明する: Tabs コンポーネントが切り替わると、TabPane に含まれる同じサブコンポーネントが繰り返しレンダリングされます。次に例を示します。 <タブ アクティブキー={タブアクティブキー} onChange={(キー: 文字列) => this.changeTab(キー)} タイプ="カード" > <TabPane tab={"外部認証"} key="/authed-by-me"> <AuthedCollections コレクションタイプ={this.collectionType} /> </タブペイン> <TabPane tab={"権限を申請"} key="/authed-to-me"> <AuthedCollections コレクションタイプ={this.collectionType} /> </タブペイン> </タブ> changeTab = (キー: 文字列) => { this.collectionType = key === '/authed-by-me' ? CollectionEnums.AUTHED_TO_GRANT : CollectionEnums.AUTHED_TO_APPLY; this.setState({ tabActiveKey: キー }) }; 分析: Tabs の onChange リスナー関数 changeTab で setState を呼び出し、ページが再レンダリングされるようにします。 Antd の戦略は、現在のものだけをレンダリングすることです。ユーザーが切り替えても、以前にレンダリングされたノードは削除されません。なので、切り替えるためのクリック数は徐々に増えていきます。これは、マウント フェーズ中にユーザーが非同期リクエストを呼び出して、切り替え時にレンダリングが繰り返されるのを防ぐためです。そのため、上位レイヤーが更新されるにつれてレンダリング回数も増加していくことが予想されます。 解決: タブが切り替わるたびに、Reactの条件付きレンダリングを使用して、前のページをDomツリーから移動します。 <タブ アクティブキー={タブアクティブキー} onChange={(キー: 文字列) => this.changeTab(キー)} タイプ="カード" > <TabPane tab={"外部認証"} key=""> { this.collectionType === CollectionEnums.AUTHED_TO_GRANT && <AuthedCollections コレクションタイプ={this.collectionType} /> } </タブペイン> <TabPane tab={"権限を申請"} key="/authed-to-me"> { this.collectionType === CollectionEnums.AUTHED_TO_APPLY && <AuthedCollections コレクションタイプ={this.collectionType} /> } </タブペイン> </タブ> Antdタブの現在のページが前後に切り替わり、フォームデータはクリアされません(またはクリアされます)フォームをクリアする方法は しかし、この記事では主に display:none を柔軟に使用すると、切り替え時にフォーム データが再レンダリングされ、setState によってクリアされることを回避できます (つまり、フォームをクリアせずにタブ項目を切り替える)。 クエリ領域 クエリ領域*/ <div className="検索フォームエリア"> { <div style={{ display: activeKey === '1' ? 'block' : 'none' }}><SearchFieldForm // プロジェクト角度 ref={(form) => this.ProjSearchForm = form} 送信Fuc={this.getProjPage} fieldsData={projSearchData} 列番号={4} diyItemLayout={{ labelCol: { span: 4 }, wrapperCol: { span: 17 } }} // moreSearchData={moreSearchData} </div> } { <div style={{ display: activeKey === '2' ? 'block' : 'none' }}>< SearchFieldForm // 製品角度 ref={(form) => this.PrdSearchForm = form} 送信Fuc={this.getProjPage} fieldsData={prdSearchData} 列番号={4} diyItemLayout={{ labelCol: { span: 4 }, wrapperCol: { span: 17 } }} </div> } </div> リストエリア {/* リストエリア */ <div style={{ height: tableHeight + 100 }} className='myProjTable'> <タブ defaultActiveKey="1" onChange={this.handleTabsChange}> <TabPane tab="プロジェクト角度" key="1" style={{ backgroundColor: '#fff' }}> <カスタムテーブル 行キー='プロジェクトID' サイズ="小" スタイル={{ 高さ: テーブルの高さ }} columns={列} テーブルデータ={プロジェクトテーブルデータ} 展開された行のレンダリング = {this.expandedRowRender} ページネーション={ページネーション} handleTableChange={this.handleTableChange} スクロール={{ y: テーブルスクロール高さ、x: 1660 }} テーブル行選択 = {this.tableRowSelection} /> </タブペイン> <TabPane tab="製品アングル" key="2" style={{ backgroundColor: '#fff' }}> <カスタムテーブル 行キー="プロジェクトID" サイズ="小" スタイル={{ 高さ: テーブルの高さ }} 列={列Prd} テーブルデータ={prdテーブルデータ} handleTableChange={this.handleTableChange} ページネーション={ページネーション} スクロール={{ y: テーブルスクロール高さ、x: 1800 }} テーブル行選択 = {this.tableRowSelection} /> </タブペイン> </タブ> </div> React antd タブの切り替えによりサブコンポーネントが繰り返し更新される問題についてはこれで終わりです。antd タブの繰り返し更新に関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: OpenSSL を使用した Kubernetes 証明書の生成の概要
>>: 動的および静的分離を実装するための Nginx サンプル コード
1. transform 属性を使用して、画像を拡大せずに表示します (パスの問題は必要に応じて修正...
MySQL での SQL モードの表示と設定MySQL はさまざまなモードで実行でき、さまざまなシナ...
SQL 左結合、右結合、内部結合、自然結合 さまざまな結合の概要SQL には、左結合、右結合、内部結...
この記事の例では、スライダー検証を実装するためのjsキャンバスの具体的なコードを参考までに共有してい...
(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...
1. ダウンロードまず、MySQLの国内ミラーをお勧めします。特に速いわけではありませんが、それで...
目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...
//文法: @media mediatype and | not | only (メディア機能) ...
1. まずファイルを作成します(ファイルを配置するディレクトリにcdします) myTest.py を...
デスクトップ システムをダウンロードするには、Ubuntu の公式 Web サイト (https:/...
01 並列レプリケーションの概念MySQL のマスター スレーブ レプリケーション アーキテクチャで...
HTML では、<、>、& などは特別な意味を持ち (<、> はリン...
フロントエンドプロジェクトのパッケージ化.env.productionを見つけて、自分のIPまたはド...
目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...
a : ハイパーリンクの開始位置または宛先位置を示します。頭字語: 単語の最初の文字からなる略語を示...