react переписать handler в другом стиле
У меня есть такой код, здесь все элементарно и работает
const [isOpened, setIsOpened] = useState<boolean>(false);
const opendAccordionHandle = (event: SyntheticEvent<Element, Event>, expanded: boolean): void => {
if (expanded) {
setIsOpened(true);
} else {
setIsOpened(false);
}
};
но мне нужно написать его как-то по-другому, когда мы обновляем state при помощи prevState, можете пояснить что от меня хотят?)
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Смена состояния типа Boolean с использованием prevState
setIsOpened(s => !s);
Т.е. в setIsOpened передается функция колбэк, которая должна вернуть новое состояние. В функцию будет передано предыдущее состояние.
В общем виде это выглядит так:
setState( (prev) => {
// Тут какая то работа с prev
return newState;
})
У вас в коде это может быть так:
setIsOpened(s => !!expanded);
Или
setIsOpened(s => expanded ? true : false);
Только вот в явном виде предыдущее состояние в вашем примере не используется.