Так как PersonState является неизменным, вы не можете переназначить его.Вы должны установить его с помощью setPersonsState, как вы это делали в других функциях.
Я вижу, что вам нужно предыдущее состояние, чтобы сделать это (возможно, именно отсюда и возникла ваша путаница).Помимо синтаксиса объекта setState ({... newState}) существует другой синтаксис, который принимает функцию обратного вызова: setState (previousState => {return {... newState}}) .Это решается с помощью синтаксиса обратного вызова setState.
Таким образом, ваша функция togglePersonsHandler будет выглядеть так:
const togglePersonsHandler = () => {
setPersonsState(previousPersonsState => {
const doesShow = previousPersonsState.showPersons;
return {
...previousPersonsState,
showPersons: !doesShow
};
});
};
Удачи!