一組備選項(xiàng)中進(jìn)行多選
單獨(dú)使用可以表示兩種狀態(tài)之間的切換。
簡(jiǎn)單的 Checkbox,使用checked
切換選中狀態(tài)。
render() {
return <Checkbox checked>備選項(xiàng)</Checkbox>
}
多選框不可用狀態(tài)。
設(shè)置disabled
屬性即可。
render() {
return (
<div>
<Checkbox disabled>備選項(xiàng)1</Checkbox>
<Checkbox checked disabled>備選項(xiàng)2</Checkbox>
</div>
)
}
適用于多個(gè)勾選框綁定到同一個(gè)數(shù)組的情景,通過(guò)是否勾選來(lái)表示這一組選項(xiàng)中的項(xiàng)。
Checkbox.Group 元素能把多個(gè) checkbox 管理為一組,只需要在 Group 中使用value
綁定 Array 類型的變量即可,label
屬性除了改變 checkbox 按鈕后的介紹外,同時(shí)也是該 checkbox 對(duì)應(yīng)的值,label
與數(shù)組中的元素值相對(duì)應(yīng),如果存在指定的值則為選中狀態(tài),否則為不選中。
constructor(props) {
super(props);
this.state = {
checkList: ['復(fù)選框 A', '選中且禁用']
}
}
render() {
return (
<Checkbox.Group value={this.state.checkList}>
<Checkbox label="復(fù)選框 A"></Checkbox>
<Checkbox label="復(fù)選框 B"></Checkbox>
<Checkbox label="復(fù)選框 C"></Checkbox>
<Checkbox label="禁用" disabled></Checkbox>
<Checkbox label="選中且禁用" disabled></Checkbox>
</Checkbox.Group>
)
}
indeterminate
屬性用以表示 checkbox 的不確定狀態(tài),一般用于實(shí)現(xiàn)全選的效果
設(shè)置indeterminate
屬性該表 checkbox 不確定狀態(tài).
constructor(props) {
super(props);
this.state = {
checkAll: false,
cities: ['上海', '北京', '廣州', '深圳'],
checkedCities: ['上海', '北京'],
isIndeterminate: true,
}
}
handleCheckAllChange(checked) {
const checkedCities = checked ? ['上海', '北京', '廣州', '深圳'] : [];
this.setState({
isIndeterminate: false,
checkAll: checked,
checkedCities: checkedCities,
});
}
handleCheckedCitiesChange(value) {
const checkedCount = value.length;
const citiesLength = this.state.cities.length;
this.setState({
checkedCities: value,
checkAll: checkedCount === citiesLength,
isIndeterminate: checkedCount > 0 && checkedCount < citiesLength,
});
}
render() {
return (
<div>
<Checkbox
checked={this.state.checkAll}
indeterminate={this.state.isIndeterminate}
onChange={this.handleCheckAllChange.bind(this)}>全選</Checkbox>
<div style={{margin: '15px 0'}}></div>
<Checkbox.Group
value={this.state.checkedCities}
onChange={this.handleCheckedCitiesChange.bind(this)}>
{
this.state.cities.map((city, index) =>
<Checkbox key={index} label={city}></Checkbox>
)
}
</Checkbox.Group>
</div>
)
}
使用 min
和 max
屬性能夠限制可以被勾選的項(xiàng)目的數(shù)量。
constructor(props) {
super(props);
this.state = {
checkAll: false,
cities: ['上海', '北京', '廣州', '深圳'],
checkedCities: ['上海', '北京'],
isIndeterminate: true,
}
}
handleCheckAllChange(checked) {
const checkedCities = checked ? ['上海', '北京', '廣州', '深圳'] : [];
this.setState({
isIndeterminate: false,
checkAll: checked,
checkedCities: checkedCities,
});
}
handleCheckedCitiesChange(value) {
const checkedCount = value.length;
const citiesLength = this.state.cities.length;
this.setState({
checkedCities: value,
checkAll: checkedCount === citiesLength,
isIndeterminate: checkedCount > 0 && checkedCount < citiesLength,
});
}
render() {
return (
<div>
<Checkbox
checked={this.state.checkAll}
indeterminate={this.state.isIndeterminate}
onChange={this.handleCheckAllChange.bind(this)}>全選</Checkbox>
<div style={{margin: '15px 0'}}></div>
<Checkbox.Group
min="1"
max="2"
value={this.state.checkedCities}
onChange={this.handleCheckedCitiesChange.bind(this)}>
{
this.state.cities.map((city, index) =>
<Checkbox key={index} label={city}></Checkbox>
)
}
</Checkbox.Group>
</div>
)
}
按鈕樣式的多選組合。
只需要把Checkbox
元素替換為Checkbox.Button
元素即可。此外,Element 還提供了size
屬性,支持large
和small
兩種。
constructor(props) {
super(props);
this.state = {
cities: ['上海', '北京', '廣州', '深圳'],
checkboxGroup1: ['上海'],
checkboxGroup2: ['北京'],
checkboxGroup3: ['廣州']
}
}
render() {
return (
<div>
<div style={{margin: '15px 0'}}></div>
<Checkbox.Group value={this.state.checkboxGroup1}>
{
this.state.cities.map((city, index) => {
return <Checkbox.Button key={index} label={city}>{city}</Checkbox.Button>
})
}
</Checkbox.Group>
<div style={{margin: '15px 0'}}></div>
<Checkbox.Group value={this.state.checkboxGroup2} size="small">
{
this.state.cities.map((city, index) => {
return <Checkbox.Button key={index} label={city} disabled={city === '深圳'}>{city}</Checkbox.Button>
})
}
</Checkbox.Group>
<div style={{margin: '15px 0'}}></div>
<Checkbox.Group value={this.state.checkboxGroup3} size="large" fill="#324057" textColor="#a4aebd" min="1" max="3">
{
this.state.cities.map((city, index) => {
return <Checkbox.Button key={index} label={city}>{city}</Checkbox.Button>
})
}
</Checkbox.Group>
</div>
)
}
參數(shù) | 說(shuō)明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
label | 選中狀態(tài)的值(只有在Checkbox.Group 或者綁定對(duì)象類型為array 時(shí)有效) |
string | — | — |
trueLabel | 選中時(shí)的值 | string, number | — | — |
falseLabel | 沒(méi)有選中時(shí)的值 | string, number | — | — |
disabled | 按鈕禁用 | boolean | — | false |
checked | 當(dāng)前是否勾選 | boolean | — | false |
indeterminate | 設(shè)置 indeterminate 狀態(tài),只負(fù)責(zé)樣式控制 | boolean | — | false |
參數(shù) | 說(shuō)明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
value | 指定選中的選項(xiàng) | string[] | - | [] |
size | Checkbox 按鈕組尺寸 | string | large, small | — |
fill | 按鈕激活時(shí)的填充色和邊框色 | string | — | #20a0ff |
textColor | 按鈕激活時(shí)的文本顏色 | string | — | #ffffff |
min | 可被勾選的 checkbox 的最大數(shù)量 | number | — | — |
max | 可被勾選的 checkbox 的最小數(shù)量 | number | — | — |
事件名稱 | 說(shuō)明 | 回調(diào)參數(shù) |
---|---|---|
onChange | 當(dāng)綁定值變化時(shí)觸發(fā)的事件 | value |
更多建議: