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);

Только вот в явном виде предыдущее состояние в вашем примере не используется.

→ Ссылка