Вы не вызываете свой setState
обратный вызов.Попробуйте так:
this.setState(
{
questions: this.state.questions.map(q => {
if (q.id === 2) {
return {
...q,
answer: true
};
}
return { ...q };
})
},
() => console.log(this.state.questions[1]) // did not see id of 2 being changed to true?
);
Хотя, так как вы снова используете текущее состояние для обновления своего состояния, было бы лучше использовать функционал setState.
this.setState(
currentState => ({
questions: currentState.questions.map(q => {
if (q.id === 2) {
return {
...q,
answer: true
};
}
return { ...q };
})
}),
() => console.log(this.state.questions[1])
);
Кроме того, вам не нужноне нужно регистрировать ваше состояние в обратном вызове на setState
.Вы можете зарегистрировать свое состояние в методе render
, не вызывая обратный вызов setState
.
this.setState(
currentState => ({
questions: currentState.questions.map(q => {
if (q.id === 2) {
return {
...q,
answer: true
};
}
return { ...q };
})
})
);
....
render() {
console.log( this.state );
....
}