169 похожих чатов

Привет всем, буду признателен за подсказку, нужно по нажатию на

текст зачеркивать его, для того что бы диспатч 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()}>

7 ответов

16 просмотров

useEffect нельзя в функцию ложить

Ego- Автор вопроса

Как быть? Если сделать так, то диспатчится не изменённое значение. setElementFlag(!ElementFlag) props.ChangeFlag(props.element.id, ElementFlag)

убрать useEffect. Он ничего не имеет общего с диспатчем

диспачь то что сетаешь !ElementFlag

особенности useState, новое значение будет в следующей итерации

тогда юзеффект будет срабатывать при каждом изменении ElementFlag и диспатчить то значение на которое поменялось

Ego- Автор вопроса

Спасибо! Всё понял)

Похожие вопросы

Обсуждают сегодня

Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
А чем вам питонисты не угодили?😂
.
79
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Всем привет. Поделитесь, пожалуйста, опытом. Есть форма, на которой имеется dbgrid и кнопки: добавить, редактировать, удалить. Если нет записей в dbgrid, то кнопки редактирова...
Евгений
5
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Как структуру (из MSVC) в которой описаны битовые поля описать для fasm? Вот например это (fBinary...fDummy2 - это физически 1 DWORD): typedef struct _DCB { DWORD DCBlength;...
Евгений
3
type TExtensions<GExtender>=class function GetExtension<GEntityExtenderType>:GEntityExtenderType; end; function TExtensions<GExtender>.GetExtension<GEntityExtenderType...
zamtmn
9
Всем привет, препод задал вопрос, подскажите пожалуйста, какой адрес инкапсулирует указатель?
Свинка Пеппа
9
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Карта сайта