Это мое начальное состояние компонента
this.state = {
date: "",
students: "",
attendance: {}
}
Вкл. ComponentDidMount Я получаю данные и массив студентов из редуктора.
componentDidMount() {
const { date, students } = this.props;
const todayDate = this.getFormattedDate(date);
this.setState(prevState => ({
date: todayDate,
students,
attendance: {
...prevState.attendance,
[todayDate]: students
}
}), () => console.log('CDM', this.state));
}
У меня есть флажок, который при прикосновении должен обновлять attendance[todayDate]
и обновлять свойство checked
конкретного студента.
При рендеринге я планирую посещаемость [дата] и возвращаю JSX
<CheckBox
checked={student.checked}
onPress={() => this.takeAttendance(student.id)}
containerStyle={styles.checkboxStyle}
/>
Чек Хендлер
takeAttendance(id) {
this.setState(prevState => ({
attendance: {
...prevState.attendance,
[this.state.date]: prevState.attendance[this.state.date].map(
obj => (obj.id === id ? Object.assign(obj, { checked: !obj.checked }) : obj)
)
}
}), () => console.log('TA', this.state));
}
Так что работает правильно. Свойство checked
учащегося, посещающего [дата], изменяется, но оно также меняет проверенное значение в части состояния студента. Я не понимаю, почему это также меняет состояние студентов, а не только посещаемость [дата].
Добавлено видео для справки. потоковый