AntDチェックボックスの3種類のステータス処理
2022-02-19 22:31:57
- 1つのCheckboxに対して、checkedとuncheckedの2つの値しかありません。
- しかし、チェックボックスグループの場合、checked、indeterminate、uncheckedの3つの値があります。
AntDは、同じ値を
Checkbox Group
は以下のように実装されています。
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import '. /index.css';
import { Checkbox } from 'antd';
const CheckboxGroup = Checkbox.Group;
const plainOptions = ['Apple', 'Pear', 'Orange'];
const defaultCheckedList = ['Apple', 'Orange'];
const App = () => {
const [checkedList, setCheckedList] = useState(defaultCheckedList);
const [indeterminate, setIndeterminate] = useState(true);
const [checkAll, setCheckAll] = useState(false);
const onChange = checkedList => {
setCheckedList(checkedList);
setIndeterminate(
! ! checkedList.length && checkedList.length < plainOptions.length
);
setCheckAll(checkedList.length === plainOptions.length);
};
const onCheckAllChange = e => {
setCheckedList(e.target.checked ? plainOptions : []);
setIndeterminate(false);
setCheckAll(e.target.checked);
};
return (
Check all
);
};
ReactDOM.render(
, document.getElementById('container'));
Copy the code
CodeSandBox-Checkboxグループ 3つの状態の実装
を設定したい場合は
Checkbox Group
を2つの状態にします。
-
すべて選択解除
checkbox
はindeterminate
属性は -
を変更します。
onChange
の中にsetCheckAll
の判定条件
const onChange = checkedList => {
setCheckedList(checkedList);
setCheckAll(checkedList.length ! == 0);
};
Copy the code
- 完全なコードは以下の通りです。
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import '. /index.css';
import { Checkbox } from 'antd';
const CheckboxGroup = Checkbox.Group;
const plainOptions = ['Apple', 'Pear', 'Orange'];
const defaultCheckedList = [];
const App = () => {
const [checkedList, setCheckedList] = useState(defaultCheckedList);
const [checkedAll, setCheckAll] = useState(false);
const onChange = checkedList => {
setCheckedList(checkedList);
setCheckAll(checkedList.length ! == 0);
};
const onCheckAllChange = e => {
setCheckedList(e.target.checked ? plainOptions : []);
setCheckAll(e.target.checked);
};
return (
Check all
);
};
ReactDOM.render(
, document.getElementById('container'));
Copy the code
取得元:https://juejin.im/post/5ccecc12518825412c6504f1
関連
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み] JS: Array.forEachを使用してgetElementsByClassNameの結果を反復処理する。
-
[解決済み] 私のウェブページには ' と表示され、' と表示されません。
-
[解決済み] サイプレス - テキストの内容で検索するには?
-
[解決済み] ReferenceErrorです。は定義されていません
-
[解決済み] laravel 6 に npm 経由で chartjs をインストールする方法
-
[解決済み] jQueryを使用して要素の絶対位置を求めるには?
-
[解決済み] 新しいタブで.pdfを開く方法
-
[解決済み] DynamoDBで予約キーワードをFilterExpressionとしたスキャン関数 NodeJS
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ 'state'は読み込めません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Uncaught TypeError: $.post は関数ではありません。
-
[解決済み] gulpからシェルコマンドを実行する
-
[解決済み] Momentjs : "Invalid date "を防ぐには?
-
[解決済み] JavaScriptでラベルの文字を変更する
-
[解決済み] <td>と<tr>をクリックしたときのイベント
-
[解決済み] TypeScriptでenumに値が存在するかどうかを確認する
-
[解決済み] Firebaseで複数のアイテムをプッシュするには?
-
[解決済み] ngf-selectの機能とフォームバリデーションに必要な理由は何ですか?
-
[解決済み] Nodemon - セットアップ中に「clean exit - waiting for changes before restart」。
-
[解決済み] キャンバスを使用しているため、null のプロパティ 'getContext' を読み取ることができません。