Я использую реагировать и. У меня есть массив объектов, который groupKey . Я отображаю флажок с помощью Groupkey, а также у меня есть два разных типа флажка. Одним из них является флажок «Выбрать все». на самом деле это работает, когда пользователь нажимает на флажок «Выбрать все» или «Выбор пользователя» для всех отдельных. Другое - это индивидуальный флажок, пользователь может выбрать отдельно. когда пользователь отправляет на кнопку, то он дает мне этот формат данных ["manage_books", "manage_journals", "manage_deals"]
вот мой пробный код:
let defaultCheckedList = ["manage_deals"];
state = {
groupKey: [{
id: 1,
key: "manage_books",
label: "books"
},
{
id: 2,
key: "manage_journals",
label: "journals"
},
{
id: 3,
key: "manage_deals",
label: "deals"
}
],
checkedList: defaultCheckedList,
output: [],
indeterminate: true,
checkAll: false
};
onCheckAllChange = e => {
this.setState({
checkedList: e.target.checked ?
this.state.groupKey.map(item => item.key) :
[],
indeterminate: false,
checkAll: e.target.checked
});
};
onChange = (e, value) => {
this.setState({
checked: e.target.checked,
output: this.state.output.concat(value)
});
};
onSubmit = () => {
console.log(this.state.output)
}
render(UI)
<
div >
<
div className = "site-checkbox-all-wrapper" >
Select All <
Checkbox
indeterminate = {
this.state.indeterminate
}
onChange = {
this.onCheckAllChange
}
checked = {
this.state.checkAll
}
/> <
/div>
I am looping checkbox by groupKey.I am passing key using onChange method. {
this.state.groupKey.map(item => ( <
div className = "userpermission-content"
key = {
item.id
} > {
item.label
} <
Checkbox onChange = {
(e, value) => this.onChange(e, item.key)
}
value = {
item.key
}
/>{" "} <
/div>
))
} <
button onClick = {
this.onSubmit
} > submit < /button> <
/div>
);
}
}
В этом коде , вы можете видеть, что два отдельных флажка изначально выбран, мне нужно получить полностью так: https://codesandbox.io/s/4k6qi
это мой кодовый ящик: https://codesandbox.io/s/check-all-ant-design-demo-vhidd?file= / index. js