Герман
useCallback(fn, deps) is equivalent to useMemo(() => fn, deps).
Александр
А если обернёте это в useMemo и укажите в dep list переменную theme, то объект стилей будет пересоздаватся только при изменении темы
Александр
интесная тема кстати, часто в рендерах даже в классах на такое кладут болт
В большей части случаев можно и болт положить, я стараюсь не класть. Но зачастую производительность упирается далеко не в это.
Red[$]hort
а в redux useSelector нужно оборачивать в memo или он сам мемоизирует?
Александр
а если без memo и только с dep list, то пересоздаватся будет при изменении dep list?
В смысле без мемо? Под dep list подразумевается второй аргумент у. useEffect/useMemo/useCallback
Александр
Там внутри все сделано, если вы про альфа версию v7 с худами
Red[$]hort
Не надо
видимо в useSelector вторым аргументом надо shalowEqual прокинуть, таким образом useSelector будет вызываться при каждом рендере, но только если shalowEqual вернет false?
Mikhail
почитаешь вас и прям страшно хуки использовать, шаг в сторону и куча лишних рендеров
Red[$]hort
на самом деле круче стало, с классом как-то топорно даже теперь
Александр
блин, интересно, спасибо!
Посмотрите код, там интересного много можете подчерпнуть
Red[$]hort
люблю когда многое можно подкрутить
Александр
Не надо боятся хуков, они добрые и пушистые
Red[$]hort
стор же выходит хранится в контексте, верно?
Александр
Red[$]hort
сам provider ничего не меняет для child-компонентов при обновлении стора
Александр
Меняется state внутри него
Red[$]hort
store не меняется
я так понял они zombie component только не исправили с хуками, они в классах исправлены
Александр
А вот в 6 версии они решили попробовать выкинуть объект стора и напрямую положили стейт в контекст
Александр
Dmitry
кеш в circle ci можно почистить ?
Александр
🦜
почитаешь вас и прям страшно хуки использовать, шаг в сторону и куча лишних рендеров
Юзаю хуки и не боюсь лишних ререндеров (effector спаси и сохрани) 🌚
Red[$]hort
есть опасение что мемоизация хуков может сказываться на расходование памяти
Red[$]hort
похоже что мемоизации гораздо больше чем в случае с классами
Александр
Не бойтесь и попробуйте в конце концов
Александр
Никто не заставляет же
Red[$]hort
Не, не больше
тот же useEffect, каждый делает мемоизацию, а в классах это лишь обычный метод
Dmitry
Юзаю хуки и не боюсь лишних ререндеров (effector спаси и сохрани) 🌚
просто тонна ререндеров и не угадать откуда все
Александр
тот же useEffect, каждый делает мемоизацию, а в классах это лишь обычный метод
Ну не знаю, если бы кто-то занялся детальной профилизацией, то можно было бы сказать что-то более существенное о оверхеде в случае хуков. А так хз.
🦜
просто тонна ререндеров и не угадать откуда все
Угадать. Просто профилировать уметь надо
Александр
просто тонна ререндеров и не угадать откуда все
Да почему же тонна, указываете в dep list что нужно
Dmitry
Угадать. Просто профилировать уметь надо
ага. Капитан проект на 100 строк конечно не ререндерит
Dmitry
еще если не твой проект
Dmitry
везде зависимости указаны
Александр
Или вы про кривые руки?
🦜
да но хуков может быть сотни
И? Между ререндером состояние хука запоминается
Dmitry
И? Между ререндером состояние хука запоминается
и что ? Зачем мне ререндер в пустую
Dmitry
зачем тонна мемоизации ?
Александр
зачем тонна мемоизации ?
Да где видите это
🦜
зачем тонна мемоизации ?
Где? Не обновляешь пропсы, нет ререндера
Александр
и что ? Зачем мне ререндер в пустую
Чтобы небыли этого указывайте только необходимые переменные в dep list, используте useCallback и useMemo
Dmitry
капитан
Александр
Где? Не обновляешь пропсы, нет ререндера
Такое чувство что не слышат нас
Dmitry
ладно. Я не об этом
Александр
Или что-то не знаем о хуках
Dmitry
чувак сотни хуков проет не твой найди допиши ты меня не слышишь ?
Dmitry
везде есть deps все екшены с useCallback
Red[$]hort
парни, вы придерживаетесь подхода при котором любой компонент может подписаться на стейт, или используете некие контейнеры для подписок, а все что внутри них не имеет подписок?
Дима
чувак, всё хорошо? чувак, не молчи чувак...
🦜
Такое чувство что не слышат нас
Мне уже как-то всё равно. Я использую что хочу, чтобы писать код было удобно
🦜
Если с бабками облом
Александр
Мне уже как-то всё равно. Я использую что хочу, чтобы писать код было удобно
Вот и я так, с хуками мне лично и моим коллегам удобнее
Mikhail
Юзаю хуки и не боюсь лишних ререндеров (effector спаси и сохрани) 🌚
да, сейчас все брошу и перепишу 48 редьюсеров на effector
Александр
Доказывать уже скучно что-то
🦜
да, сейчас все брошу и перепишу 48 редьюсеров на effector
Ну твои проблемы, что ты не смог приготовить вью слой отдельно от даты слоя
🦜
да, сейчас все брошу и перепишу 48 редьюсеров на effector
Тем более 48 редьюсеров. Пиздец лапшикода без переиспользования
🦜
а там написано что все вместе ?
Ну если ему больно переписать один за один редьюсером, то думаю да
🦜
Да и редакс мало кто тут умеет готовить
Mike
с одной стороны с контейнерами все в одном месте, с другой - ненужные рендеры в child-компонентах
ты просто оборачиваешь в контейнер любой компонент, который хочет подписаться, и все, ты и слои разделил, и ререндеров нет
🦜
Я не умею
Mikhail
а кто-нибудь вообще знает про effector вне этого чата? кто-то использует его в продакшене?