説明する: 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 サンプル コード
実験環境最小限にインストールされた CentOS 7.3 仮想マシン基本環境を構成する1. ngin...
目次ナンセンス文章最初ルーター/index.js 2番目1. プラグインをインストールする2.mai...
pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...
個人的にはインストール版よりも解凍版の方がインストールしやすいと思います。早速、解凍版のインストール...
この記事は、参考のためにMySQL 8.0.18のインストールと設定のグラフィックチュートリアルを記...
序文データ型変換とは何ですか?フォームまたはプロンプトを使用して取得されるデフォルトのデータ型は文字...
これは Linux 管理者にとって重要な (そして素晴らしい) トピックなので、誰もが Linux ...
MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...
最初の方法: skip-grant-tables: 非常に便利なmysql起動パラメータ非常に便利な...
目次MySQLを初期化するMySQL サービスをインストール + MySQL サービスを開始MySQ...
1. Flex は Flexible Box の略で、「柔軟なレイアウト」を意味し、ボックス モデル...
目次1. はじめに2. 実装3. HTML ドラッグ アンド ドロップ API を使用しないのはなぜ...
Windows Server 2012 と Windows Server 2008 では、デスクトッ...
HTML でのテキストのデフォルトの配置は水平ですが、特殊な場合にはテキストを垂直に配置する必要が...
Nginx はバージョン番号を非表示にする実稼働環境では、セキュリティ上の脆弱性の漏洩を避けるために...