Bogdan
а вот есть у кого линк, была на гите репа, там был проект выполнен на всем чем можно простенький, хотел скинуть, не могу найти
Александр
Поэтому я и сказал. Лучше сразу учиться делать нормально.
Ну для однотипности кода везде писать useCallback, мб ещё могу понять
Dmitriy
И что будет? В данном случае?
Ты понимаешь как реакт оперирует функциональными компонентами при ререндер vdom?
Александр
И всё-таки что будет в данном случае с гридом 100 на 500? Что изменит useCallback?
Dmitriy
Думал что понимаю
Он каждый раз вызывает функцию. Поэтому каждый рендер будет создаваться новая без юзколбек.
Bogdan
И всё-таки что будет в данном случае с гридом 100 на 500? Что изменит useCallback?
на апдейты он вернет старое значение, не создаст новое
Dmitriy
И всё-таки что будет в данном случае с гридом 100 на 500? Что изменит useCallback?
Реакт сохранит ссылку на функцию между ререндерами
Александр
Dmitriy
Но каллбек только в button потом передаётся, так что пофиг же
Это другая проблема которую призван решать юзколбек
voix
Но каллбек только в button потом передаётся, так что пофиг же
Да там речь, что сами функции будут каждый раз пересоздаваться. По сути это незначительная по сложности операция, но в каких-то случаях может сыграть некоторую роль в производительности.
Dmitriy
Да там речь, что сами функции будут каждый раз пересоздаваться. По сути это незначительная по сложности операция, но в каких-то случаях может сыграть некоторую роль в производительности.
Все верно. Если компонент в примере выше будет пару раз юзаьься то это экономия на спичках. А множественное использование может вызвать множественное создание новых функций в единый апдейт.
Александр
Зачем преждевременно оптимизировать, то что не сломано и не тормозит, так можно дойти до того что вообще будем вызов любой функции мемоизирлвать
Александр
То есть функция то будет один фиг пересоздаваться каждый ререндер, другой вопрос что useCallback будет всегда возвращаясь ссылку на одну из них, первый раз созданную
Александр
И вообще создание функции это очень лёгкая операция
Bogdan
Зачем преждевременно оптимизировать, то что не сломано и не тормозит, так можно дойти до того что вообще будем вызов любой функции мемоизирлвать
я не понимаю спора, кинул пример, уточнить как вынести стоит ф-ю, конечно, если в одном месте она, то возможно не стоит этого делать, но хуже от этого не станет
Александр
там массив пустой, не будет
Ну как же не будет, функция будет каждый ререндер создаваться, новая, или вы думаете тут магия и useCallback магическим образом работает?
Александр
Я повторюсь может, но цель useCallback не предотвратить создание новой функции каллбека при ререндере, это с необходимостью будет происходит все равно, а в том чтобы сохранить ссылку на каллбек и всегда возвращать именно ее (пока не будет изменений в dep list конечно же)
Александр
Это не очевидно разве?
Bogdan
да, функция все равно пересоздается
тогда смысл от юсколбека?
Sergey
тогда смысл от юсколбека?
ссылку сохранить
Dmitriy
Основы js
Ты прикалываешься? А как же ссылка сохраняется?
Александр
Не может язык работать иначе в одном месте, аргумент useCallback не исключение, и его аргумент вычисляется каждый раз, а аргумент у него функция, так что каждый раз создаётся новое замыкание
Александр
тогда смысл от юсколбека?
Ссылку сохранить
Bogdan
ссылку сохранить
но юсколбек пересзодался, выполнилась таже операция, или я не пойму, тогда нам не важно пересоздание ф-и, важна только ссылка, что бы у ребенка не было апдейта?
Bogdan
Ссылка важна да, функа пусть пересоздается
но в примере выше значит колбек не нужен, если бьы пропсом кидал, тогда важна, лол, что то я не думал об этом
Bogdan
тогда вот тут нету смысла вообще выносить ф-ю, если я ее глубже не передаю
Bogdan
О чем и речь была
я к тому, что вообще выносить нет смысла тогда вот от этого <button onClick={() => foo(arg)}>primary</button> ничем не отлично
Bogdan
В большинстве случаев да.
да во всех, один случай, если ее прокинул от родителя и вроде все
Zhanadil
ребята киньте ссылку или подскажите, как можно в свою ветку в гитлабе замерджить с компа проект?
Bogdan
вот два таких диких открытия каких то, вроде очевидных на первый взгляд
Bogdan
Отличная, react будет onClick переподписывать в этом случае
а выше вынести без useCalback - тоже переподпишет, но с ним не переподпишет?
David
Ребята, а никто не поделиться опытом, зашёл проект на React Native, у меня до этого опыт только с React. Как обычно его тестирует QA, как происходит деливеринг к клиенту? Не будет же тестировщик клонировать проект, делать инсталлы, разворачивать xcode, запускать эмулятор, сканить QR код, и вот это вот все...или будет 😆 Может статью нормальную кто кинет)
Bogdan
Да
так вот это тогда не преимущество использования useCalback? выше писали, что в данном примере толку от него нету, выходит есть
Bogdan
Может переподписка быстрее чем логика в хуке?)
может, но это определить на глаз разве что если
voix
Вот она. https://kentcdodds.com/blog/usememo-and-usecallback
Anonymous
Есть ли смысл разбивать функциональный компонент с хуками на два - представление и контейнер, если представление состоит из мелких компонентов?
Bogdan
Вот она. https://kentcdodds.com/blog/usememo-and-usecallback
он про колбек единичный пример привел, но если передаешь ф-ю ребкнку, то стоит еолбек заюзать?
Vadim
Есть ли смысл разбивать функциональный компонент с хуками на два - представление и контейнер, если представление состоит из мелких компонентов?
Не особо. Помнится Абрамов где-то говорил, что реакт этим и отличается от всяких ангуляров, что логика компонента и его вью лежит в одном файле
Maksim
Вот она. https://kentcdodds.com/blog/usememo-and-usecallback
Статья такое себе, посыл про то что оптимизации не бесплатны, но нет сравнения профита и затрат
Sergey
не лежит, а может лежать правда)))
Bogdan
Статья такое себе, посыл про то что оптимизации не бесплатны, но нет сравнения профита и затрат
и я только понял, что в моем примере только возможно, затраты на колбек будут больше, чем на создание ф-и и переопределение клика
Sergey
затраты на размышления об этом уже больше заняли. Лучше мерить
Bogdan
ну вот один пример где явно видно, что нужно юзать
$$$$$$$
Привет ребята
$$$$$$$
Смотрите , есть Баттон , при клике на него , стейт ставится тру , к элементу добавляется активный класс, background image в активном классе меняется . самый прикол , в том что при первом клике после load page , delay небольшой есть в 0.01 секунду . Как исправить можно этот delay ? Как бы это не особо заметно , но заказчие придирчив
Shimon
Скажите, а как в Bootstrap Pagination линки добавлять?
$$$$$$$
Фишка в том что не на клике delay , а на смене бг и только в первый раз
$$$$$$$
Хм , типо менять бг не в css , а добавит элемент img
$$$$$$$
И при загрузке приложения , подгрузить сразу Пикчу
Yury
Хм , типо менять бг не в css , а добавит элемент img
нет, типа сделать предзагрузку картинки этой. не важно - бг или img это будет
Shimon
Скажите, а как в Bootstrap Pagination линки добавлять?
Окружить линком - не получается. Поскольку он вставляет и свои линки на #. А обработчик события я ставть не хочу, так как нужно для SEO чтобы был именно href
Andrey
вопрос, у меня самописный сср, при обращении к window или navigator получаю is not defined на сервере, по понятным причинам, как это можно обходить?
Andrey
обращаться к window только если это клиент
а на серве просто на андефайнд проверять?
Andrey
так вроде делаю, но чет все равно ругается
Andrey
или трай кетчит его мб, типа ругается на анхендлед промис