текст зачеркивать его, для того что бы диспатч props.ChangeFlag дождался изменения значения setElementFlag(!ElementFlag), использую useEffect, но всё падает с ошибкой:
Invalid hook call. Hooks can only be called inside of the body of a function component.
Как я понимаю хук нельзя вызывать в обработчике, ошибка в этом?
const [ElementFlag, setElementFlag] = useState(props.element.complete);
const ChangeFlagHandler = () => {
useEffect(() => {
setElementFlag(!ElementFlag)
},[]);
props.ChangeFlag(props.element.id, ElementFlag)
}
return (
<TouchableOpacity onPress={() => ChangeFlagHandler()}>
useEffect нельзя в функцию ложить
Как быть? Если сделать так, то диспатчится не изменённое значение. setElementFlag(!ElementFlag) props.ChangeFlag(props.element.id, ElementFlag)
убрать useEffect. Он ничего не имеет общего с диспатчем
диспачь то что сетаешь !ElementFlag
особенности useState, новое значение будет в следующей итерации
тогда юзеффект будет срабатывать при каждом изменении ElementFlag и диспатчить то значение на которое поменялось
Спасибо! Всё понял)
Обсуждают сегодня