Nikolai
Егор
Что значит "есть он"? Реф всегда есть после создания, и он может хранить не только ссылки на дом
Я про ref.current - если что-то хотите с ним делать, вероятно есть разница уже инициализировался или там значение по умолчанию
Nikolai
Я про ref.current - если что-то хотите с ним делать, вероятно есть разница уже инициализировался или там значение по умолчанию
Если у меня нет условного рендера на элементе с рефом, то я точно знаю что он будет после маунта в рефе.
Егор
Если у меня нет условного рендера на элементе с рефом, то я точно знаю что он будет после маунта в рефе.
А потом потребовалось добавить условие, и забыл про зависимость, потому что тупо не выспался, аха.
Егор
Я уже скинул рекомендацию реакта
Dmitriy
Если у меня нет условного рендера на элементе с рефом, то я точно знаю что он будет после маунта в рефе.
https://codesandbox.io/s/keen-wescoff-1iow9 Зависимость не спасет. Ручками все равно прийдется внутри проверить, так что товарисч втирает чуток
Dmitriy
Нужно, да. Но тут речь про вызов самого хука
Ты понимаешь главный вопрос? Зачем кидать реф в зависимость если это ничего не дает в данном кейсе?
Daniil
Я уже скинул рекомендацию реакта
К сожалению, ты плохо читаешь
Егор
Понимаю, но с тем что ничего не дает не согласен
Егор
То что в моменте ничего не дает - не означает что ничего не дает в принципе. Ты понимаешь разницу между стратегией и тактикой?
Nikolai
Нужно, да. Но тут речь про вызов самого хука
Если хук нужно вызвать при маунте один раз - то в депах пустой массив. Или вы будете ещё другой реф создавать, чтобы хранить в нем булево, что хук выполнился?
Daniil
Нуну
Дай конкретный пример где у тебя требовалось добавить реф в зависимость и это спасло тебя
Dmitriy
То что в моменте ничего не дает - не означает что ничего не дает в принципе. Ты понимаешь разницу между стратегией и тактикой?
Ты на трениниги переходил что ль?) Есть конкретный кейс. Тут это не надо, выяснили. Спрашиваю а где тогда надо - тактика
Nikolai
@EgorKluch Вы с Андреем звёздочкой не в одной команде случайно? А то он тут недавно рассказывал, что все хендлеры в useCallback оборачивает "на всякий случай"
Егор
Ну хз
Тут ваще не нужен ref
Егор
А не, ну да. Но я таких кейсов не встречал)
Dmitriy
Перечитал много умных книжек)
доку реакта и статьи почитай лучше
Daniil
Так этому в Яндексе или Альфе тебя научили?
Егор
Так этому в Яндексе или Альфе тебя научили?
Когда там работал еще не юзались хуки)
Daniil
Но ведь должна была причина, почему ты начал такое использовать. Где ты получил выстрел в ногу
Daniil
Ведь если ты за это топишь, то был кейс реальный.
Daniil
Расскажешь зачем рефы в дипсы?
🦜
Вы целый час о нихуя ведёт дискас
Daniil
Или ты просто решил "на всякий случай"?
i
эмм... как так получается что фолс но в хранилище тру? переменная status также прописана но меняетсмя значение
Егор
Ведь если ты за это топишь, то был кейс реальный.
ну я просто когда изучал хуки очень много багов ловил. Изучал инфу читал статьи, вот и все. Не вспомню уже. Я уже рассказал, лень десятый раз писать. Просто задумываюсь - можно ли потенциально сломать случайно? Вот и все. Есть риск - можем случайно создать баг. Есть меры по его предотвращению - добавить лишний deps. Цена мер - практически нулевая по времени. Так почему не использовать?
Daniil
То есть, просто так решил? На всякий случай
Егор
А могут ли эти доп меры сломать код? Ну крайне меловероятно - но об этом конечно задумываюсь когда пишу код. Таких кейсов пока не встречал. Выше был один
Daniil
Бойлерплейт не ломает код, но усложняет его понимание
Егор
То есть, просто так решил? На всякий случай
Да, потому что за нулевую цену устранить риск - это норм решение.
Егор
Бойлерплейт не ломает код, но усложняет его понимание
Я выше писал, больше трех зависимостей не припомню что бы было. В одну строчку помещаются всегда.
Daniil
Устранять то, что еще не проявляло себя в целом судя по ишью и комьюнити реакта.
Dmitriy
Ну это вопрос к коду)
Скорее к подходу
Nikolai
Лишний шум в коде
Daniil
Я выше писал, больше трех зависимостей не припомню что бы было. В одну строчку помещаются всегда.
Ты же понимаешь, что ты банально своими действиями грохаешь линтеры на дипсы хуков?
Daniil
и всю команду соответственно на проекте
Егор
Ты же понимаешь, что ты банально своими действиями грохаешь линтеры на дипсы хуков?
Проверю инфу, мы недавно на eslint перешли с tslint. Пока ничего не ломало.
Егор
Спасибо
Егор
Может правила этого нет тупо. Проверю.
Егор
Но не понимаю что там может сломаться. То что ref.current юзаю в депсах?
Daniil
Писать проверки нужно к тому, что действительно может выдать сбой. Ты встречал ишью или подобное в комьюнити реакта, где рефы в дипсах решали проблему, кроме кеширования?
Егор
Не понял тебя, наверное нет. Они контролируют кэширование и колличество вызовов. Ну как бы я это и контролирую же, что бы точно вызвалось. Минус - лишний раз вызывается хук - но пока не требуется такая оптимизация, и не могу представить кейс когда потребуется.
Егор
Ну то есть это еще не видел что бы было самым узким звеном в быстродействии. Обычно нужно просто дополнительно кэшировать сложные вычисления и т.д. Ну я не работаю там где прям микрооптимизация нужна и каждая миллисекунда важна - там может быть другие правила.
Daniil
В общем, я вел к тому, что подобными действиями, ты можешь ухудшить читаемость и понимание, банально человек может не понять, зачем ты реф в зависимость засунул, ведь я уверен, такое не часто можно увидеть. Линтер хуков тоже начнет ругаться, его отключать, либо настраивать. И так поэтапно. По итогу, если у комьюнити реакта не было проблем с кейсом, который тут упорно обсуждают в треде, то я пока не вижу нужды в этих действиях. Как только - поправим. А пока это больше похоже на псевдооптимизации лично мне
Егор
https://codepen.io/EgorKluch/pen/ZEEqZRm - а вот банальный пример сломанного кода (изначально на пустой массив и был пример с useEffect) Но я тебя, @Tchernyavsky услышал, подумаю.
Егор
Ааа. Ну кстати да. Логично, реально
Егор
https://codepen.io/EgorKluch/pen/ZEEqZRm - вот как пример, но если добавить зависимость - ререндера все равно не будет)
Егор
Потому что это же не стейт и не пропс
Dmitriy
Что вместо момента взять?
Daniil
date-fns
Dmitriy
date-fns
почему не dayjs ?
Max
https://github.com/you-dont-need/You-Dont-Need-Momentjs
Daniil
почему не dayjs ?
https://artemdemo.com/blog/20181104-replacing-momentjs/
Daniil
Год назад, да ( сейчас может игра и изменилась, но суть та же
Dmitriy
https://artemdemo.com/blog/20181104-replacing-momentjs/
тут речь о размере. dayjs еще ж меньше
Ruslan
Что там, 16.12 уже выкатывают?
Michail
Всем привет Не кто не знает почему если я пишу у компонента style={{marginBottom: 24}}, а у этого компонента есть div className={props.default ? classes.first : classes.second}, мои инлайн стили к нему не присваиваются?
Michail
style прокиньте в див
типо style={props.style}?
Michail
Да
Понял, и это нормально?
Michail
Вполне
не знаешь как по regex находить в webstorm'e?
Андрей
Привет, подскажите, пожалуйста, кто работает с mobx, почему при первом изменении тектового поля слетает фокус. Как будто реакт не запоминает это текстовое поле в доме и добавляет его заного. Пробовал указывать атрибут key, но мне не помогло
Андрей
Перерисовывает компонент. Ты знаешь что делает реакт и где?
Понятно что он его рендерит. У меня экшен вызывается при событии onChange у текстового поля. Я подозреваю что он его заного создаёт после первого изменения, так как вызывается конструктор, но ведь при последующих изменениях этого не происходит. Значит в виртуальном доме у него есть этот инпут и реф ссылка?