Я сделал начальное состояние для выбора одного флажка. Вот мое начальное состояние
this.state = {
fruites: [
{ id: 1 , value: "banana", isChecked: false },
{ id: 2, value: "apple", isChecked: false },
{ id: 3,value: "mango", isChecked: false },
{ id: 4, value: "grap", isChecked: false }
]
};
}
Метод: я просто это для выбранных все флажок
handleAllChecked = id => event => {
let fruites = this.state.fruites;
fruites.forEach(fruite => {
data.filter(item =>
fruite.isChecked = event.target.checked;
});
});
this.setState({ fruites: fruites });
};
Я просто этот метод для отдельных checkbox.
handleCheckChieldElement = event => {
let fruites = this.state.fruites;
fruites.forEach(fruite => {
if (fruite.value === event.target.value)
fruite.isChecked = event.target.checked;
});
this.setState({ fruites: fruites });
};
Render: Вот мой пользовательский интерфейс, я хочу установить флажок All на основе группы. Например, у меня есть две группы значений - такие как Group, Topgroup. Проблема в том, что, когда я нажимаю на группу, она устанавливает флажок Все, включая Topgroup, а также я щелкаю банан, он выбирает весь банан, я не хочу получать весь банан, когда нажимаю на один элемент. Я не хочу получать флажок topgroup, когда я выбираю группу.
{[{ id: 1, name: "group" }, { id: 2, name: "topGropup" }].map(item => (
<div>
<input
type="checkbox"
onChange={this.handleAllChecked(item.id)}
value="checkedall"
/>{" "}
{item.name}
<ul>
{this.state.fruites.map((fruite, index) => {
return (
<CheckBox
key={index}
handleCheckChieldElement={this.handleCheckChieldElement}
{...fruite}
/>
);
})}
</ul>
</div>
))}
</div>
Как я могу решить эту проблему. Вот мой кодовый ящик: https://codesandbox.io/s/react-multi-select-checkbox-or6ko