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

Привет. Надо обновлять state (useState) после того как поменялась переменная

ref (useRef).
Пробовала useEffect но почему-то не работает. Помогите кто знает в чем причина?
Благодарю!

36 ответов

38 просмотров

Опиши кейс. Что хранишь в рефе?

Ref не для того, чтоб на него подписываться

Почему должен вызываться useEffect если изменить ref?

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

Тебе искусственно надо дёрнуть ререндер. Значение в ref мутабельно

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

Как без рендера вызовется useEffect?

Alena- Автор вопроса
IceBerg
Как без рендера вызовется useEffect?

При изменении того что в массиве

IceBerg
Как без рендера вызовется useEffect?

Не рендер вызывает юз эффект. А вызов функции компонента

Alena
При изменении того что в массиве

Почитай как работает useEffecf и useRef Вангую, прямо в доке написано уточнение то шо ссылка не меняется у useRef

Alena
При изменении того что в массиве

Что при изменении того что в массиве?

IceBerg
Да не в этом же дело

Я как понял, она записывает value = useRef() в массив зависимостей useEffecf и не понимает почему при изменении value не происходит обновлений. Верно жеж?

Alena- Автор вопроса
IceBerg
Что при изменении того что в массиве?

useEffect(() => {•••}, [изменение того что в этом массиве])

Alena
useEffect(() => {•••}, [изменение того что в этом ...

Вот ты вызвала useEffect этой строкой, почему при изменении рефа эта строка должна снова отработать?

Sunrise
Я как понял, она записывает value = useRef() в мас...

Да, и иммутабельность рефа ни при чём

Sunrise
Я как понял, она записывает value = useRef() в мас...

Ну и ни только value там в зависимостях, а и current, который переопределяется

Alena
Поясните

Я вас не так понял. Простите

Alena- Автор вопроса
Alena
Поясните

Но обсервабл это наблюдатель

Alena
useEffect так работает

Я не спрашивал как он работает, почему он должен вызваться второй раз

Alena- Автор вопроса
IceBerg
Я не спрашивал как он работает, почему он должен в...

так как он следит за изменениями того что в массиве

Не следит, а при вызове сравнивает значения в массиве с прошлыми

IceBerg
Не следит, а при вызове сравнивает значения в масс...

Душно, она же ведь тоже права. Следит за тем чтобы сравнить

useEffect(() => {...}, [5]) За чем useEffect здесь следит?

Erzhik Erjik
Душно, она же ведь тоже права. Следит за тем чтобы...

Та в том и дело, что не следит вообще, а просто сравнивает при вызове

Erzhik Erjik
Душно, она же ведь тоже права. Следит за тем чтобы...

Душно? По факту выкладывает как правильно.

IceBerg
useEffect(() => {...}, [5]) За чем useEffect здесь...

К этому можно добавить что 5 получилось путем каких то вычислений и передали переменную в которой в этот раз 5

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта