Здесь есть несколько проблем.
Прежде всего, для checked
реквизита Checkbox
требуется логическое значение, но вы передаете целые числа.
Во-вторых, когдаизменяя предыдущее состояние, вы не должны изменять его на месте, вы должны передать функцию в setState
, которая принимает предыдущее состояние и возвращает новое.
handleServiceCheck = (i) => {
this.setState(prevState => ({services:
prevState.services.map((s, idx) => {
return i === idx
? { ...s, value: !s.value }
: s
})
}));
};
Вот пример CodeSandbox Я создал с полностью исправленной рабочей версией.