darkc0der
Ребят я слышал что использование () => функции в click handler создает новую функция для каждого объекта что ухудшает перформанс тогда как мне передать переменную id как параметр handler без создания такой функции?
Dmitry
Ну это исключение
Ilya
Если нет - то и не трогайте. А вообще все сведется к user.map(user=> <UserItem key={user.id} user={user} onDelete={handleDelete} />)
Василий
Ребят я слышал что использование () => функции в click handler создает новую функция для каждого объекта что ухудшает перформанс тогда как мне передать переменную id как параметр handler без создания такой функции?
Все верно, во первых все сводится в отдельный компонент, во вторых, в UserItem пишется свой обработчик, обернутый в useCallback где ты и будешь вызывать свою функцию с параметром id
darkc0der
handleClik(id) это то что на onClick={handleCkick(id)}, а объявляете ее так const handleClick = id => e => { you code here }
Благодарю)! этого мне достаточно в моем случае так как функционала нету особого кроме клика.
darkc0der
handleClik(id) это то что на onClick={handleCkick(id)}, а объявляете ее так const handleClick = id => e => { you code here }
А можно вопрос если я вызываю эту функцию на каждый объект то получается он мне возвращает новый инстанс функции ? Что означает создание новой функции ? Или я не понимаю что то ?
darkc0der
Это ссылка на функцию
Ах да это же замыкание) пардон что то туплю
Ilya
handleClik(id) это то что на onClick={handleCkick(id)}, а объявляете ее так const handleClick = id => e => { you code here }
а в чем отличие? Такое же создание функции в каждом рендере для каждого элемента
Evgenii
Парни. Посоветуйте модуль, для склонения окончания числа
Ilya
Блин так и знал... (
в любом случае не стоит тратить время на оптимизацию этих моменнтов пока реально нет тормозов. Создание функции достаточно дешеавя операция.
artalar
а у вас есть проблемы с перформансом?
Зачем замедлять приложение заранее? Разве добавить мемоизации так сложно?
artalar
Я не получаю от этого удовольствия, но так работает реакт 🤷‍♂
artalar
Меня наоборот прикалывает это делать
Лишняя семантическая нагрузка, хотелось бы избавиться...
Andrey
ну если у тебя нет каких-то больших вычислений в компоненте, которому ты передаешь колбэк, то у тебя идет лишний вызов функции
Dmitry
Я не получаю от этого удовольствия, но так работает реакт 🤷‍♂
Это ещё тяжелее будет. Если все протыкивать. Апдейт компонента это не обязательно апдейт в дом
Andrey
вызов useCallback иногда может быть дороже лишнего рендера, от которого вы пытаетесь избавиться
Andrey
так что не всегда оправдано везде пихать
Dmitry
Usecallback не влияет на сам рендер
Так и твоя новая ссылка тоже
Andrey
Usecallback не влияет на сам рендер
он влияет на сохранность ссылки на хэндлер, да, но при этом несет за собой лишний вызов функции
Alexander
Просто перерендер меньше работает с памятью
artalar
В общем и целом, я считаю, лучше все мемоизировать, чем каждый раз думать а надо ли оно. Это не абсолютное правило, скорее общий подход
Dmitry
Просто перерендер меньше работает с памятью
Ты думаешь если обернешь в юз колбэк то не будет апдейта дочернего компонента?
Dmitry
Причём тут это?
При том. Ты же от лишних апдейтов хочешь уйти. А выходит что не ушёл
artalar
А она планируется?
Built time reactivity is the feature
Dmitry
Alexander
Я не хочу каждый раз создавать новый хэндлер. Я хочу, чтобы он пересоздавался только, когда я ему скажу
Dmitry
Я не хочу каждый раз создавать новый хэндлер. Я хочу, чтобы он пересоздавался только, когда я ему скажу
Т.е то что пересоздастся объект тебя не смущает? И что будет апдейт. Главное что бы хендлер не менялся?
Alexander
Но при этом каждый раз будет вызываться функция
Ты против использования мемоизации?
Andrey
Ты против использования мемоизации?
Я против того, чтобы избавляться от более дешёвого действия дорогим
Andrey
Мемоизация конкретно хэндлеров имеет смысл, когда у тебя дочерний компонент с тяжелым рендером обернут в React.memo
Dmitry
Или если он юзается в эффекте
Dmitry
А так приходится все колбэчить. Если все на эффектах написано. Это бесит. Зачем думать что тут тригернет это, а там то
Daniil
Просто перерендер меньше работает с памятью
Откуда такое точное суждение ?)
Andrey
мне очень интересно, чего это у людей в юзколлбеке писать дороже, чем напрямую в компоненте?
Hars
привет всем, скажите пожалуйста как скачать файл на устройства с сервера, т.е, если перейти по ссылке example.com/1.txt начинается скачивание файла, как сделать тоже самое через fetch или т.п, т.е без перезагрузки страницы
Георгий
Всем привет! Подскажите новичку статьи и в какую сторону капать. Необходимо разработать механизм авторизации пользователей в зависимости от роли admin, manager, user. Те в зависимости от роли необходимо перенаправлять на adminDashbord managerDashbord and userDashbord. На бэке написал авторизацию на express and jwt.
Prophet
В чем сложность редирект на респонсе сделать?
Alexey
Кто-то сейчас получит бан :)
Daniil
!спам
Alexey
!спам
О, а так все могут?
Daniil
Alexey
Ну, как предоставится случай :)
Oleg
Есть блог новостной. вот думаю какой стек выбрать. У кого какие идеи, если оптимально. Самый простой вариант - это сверстать c webpack и нацепить на WP
invasion
Обратите внимание на директивы :D
invasion
Элита бля)
Таймураз
Обратите внимание на директивы :D
Го без оффтопа в тематических чатах @flood_ru
invasion
Извиняюсь, прост решил настроение вам поднять :)