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

Если мне нужно выполнять какую-то функцию при изменении значения переменной,

использовать useEffect для этого, это нормальная практика, или придумать что-то другое?

15 ответов

4 просмотра

Слишком абстрактный кейс.

стейт не подойдет?

Что за переменная? useEffect ничего не делает реактивным

если что-то асинхронное - да, только проставь в зависимости ей

Pavel Efremov
если что-то асинхронное - да, только проставь в за...

Вредный совет, в зависимостях хуков должны быть только те переменный, которые внутри используются.

Radik-Khammatov Автор вопроса
Alexandr
Слишком абстрактный кейс.

Есть хук, который в зависимости от скролла страницы до определенного элемента выдает inView=true/false, таких элементов на странице несколько и сразу несколько из них могут быть видны на странице одновременно. Нужно узнать, какой элемент перешел в состояние true последним. В зависимости от того, какой элемент сейчас на странице inView=true, я отображаю справа, какую главу текста сейчас просматривает пользователь. Вот если я для каждой переменной inView1, inView2... создам useEffect и буду отслеживать, перешло ли значение в состояние true, и уже тогда обновлять индикатор прокрутки страницы, это нормально? (есть подозрение, что это можно сделать как-то по другому и проще)

Radik Khammatov
Есть хук, который в зависимости от скролла страниц...

Можно сделать проще, заюзать готовое решение по типу react-virtualized или react-window. Если принципиально написать руками, то лучше, мне кажется, сделать через коллбэк-рефы.

Radik-Khammatov Автор вопроса
Alexandr
Можно сделать проще, заюзать готовое решение по ти...

Спасибо, попробую сделать по другому. Но вообще сама по себе подобная практика использования useEffect для данной ситуации это нормально?

Radik Khammatov
Спасибо, попробую сделать по другому. Но вообще са...

А что ты ему в зависимостях укажешь? Из твоего описания могу предположить, что работа со скроллом ведется через рефы (если напрямую обращаешься к дом-элементам, то это грубейшая ошибка), рефы создаются при маунте компонентов и не меняются, значит на них юзэффект триггерить не получится, другой вариант, если есть, то я его не вижу. Можно попробовать какие-нибудь дополнительные флаги сетать из коллбэк рефов, но не вижу в этом смысла, если можно логику непосредственно там прописать.

Radik Khammatov
Есть хук, который в зависимости от скролла страниц...

если тебе все что надо это отобразить в родителе видимых детей, передавай в детей функцию на добавление и удаления из этого списка видимых, а в детях уже по своей логике добавляй / удаляй их оттуда Для проверки что элемент во вьюпорте посмотри IntersectionObserver api

Dmitriy Shuleshov
Нооо,... но это же реакт...😳😳😕

Интересно каким бы был реакт если бы state сразу сделали реактивным

Dmitriy Shuleshov
Он был бы вью?😂

Ну или у вью сразу был бы только jsx с небольшим сахаром. Странные у меня фантазии короче

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

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

Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
А чем вам питонисты не угодили?😂
.
79
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Всем здравствуйте! Я хотел узнать сколько стоит средняя месячная зарплата у Electron js разработчиков? Мне очень это важно и нужно, плиз помогите узнать эту инфу! Для Джунио...
U.K.
10
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
83
А дин типизация это хорошо или плохо?
Alexey
12
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Hello. Could you please help me with finding all coordinates within a radius using a spatial index, given that I have a table with coordinates? SET @lng = 37.57925; SET @lat ...
Rinchin G
8
Карта сайта