Sergey
Anonymous
мб, раз их расширять нельзя. По вашим словам
Sergey
Anonymous
классы
Sm•ok
Sergey
Sergey
или вы наследуете в проекте их?
Anonymous
да
Sergey
пиздец
Sergey
уносите
Алексей
декларативны
ну не особо они декларативны, раз вся их работа опирается на скрытое мутабельное состояние
Anonymous
понятно
Sergey
понятно
наследовать реакт компоненты
Danila
Sergey
Sergey
https://ru.reactjs.org/docs/composition-vs-inheritance.html
Sm•ok
Sergey
да
наследовать реакт компоненты это дичайший антипаттерн
Sergey
да и вообще любой взрослый джаваскриптер понимает, что наследовать классы в жс это как-то криво
Sergey
а любой взрослый разработчик понимает, что длинная цепочка наследования классов — путь в могилу проекта
Sergey
¯\_(ツ)_/¯
Sergey
поэтому хуки и спасение, дают возможность переиспользовать, исключить ошибки императивного кода, и уменьшить количество кода вообще
Dmytro
Наследование компонентов в реакте 🤦♂
Danila
Мне кажется, что @mchuntonov просто перепутал ФП, декларативность и композицию или просто не с той стороны вообще смотрит, поэтому и не сразу понимает аргументы за хуки
Anonymous
хорошо. спасибо. что рассказали
Sergey
хорошо. спасибо. что рассказали
> But the really big problem with inheritance is that you’re encouraged to predict the future. Inheritance encourages you to build this taxonomy of objects very early on in your project, and you are most likely going to make design mistakes doing that, because humans cannot predict the future (even though it feels like we can), and getting out of these inheritiance taxonomies is a lot harder than getting out of them.
Anonymous
я нигде не сказал, что с чем то не согласен или отвергаю. И нигде не говорил, что вы говорите что-то не правильно. Я просто задал вопрос чем это плохо. Получил много ответов. Изучу больше примеров кода, обращу на них внимание. Свою позицию я защищать не хочу, потому что действительно не так опытен и не готов так категорично спорить со всеми.
Danila
Самый простой ответ уже несколько раз дали - хуки - это возможность вынести самодостаточную логику за пределы компонента, разробить её на любое количество мелких частей, которые потом можно комбинировать, объединять и использовать полностью или частично в любых компонентах. Это - близко некоторым идеям ФП, это +1 к уровню декларативности, что всегда хорошо (выносишь детали конкретного куска логики за компонент), это большая ментальная разгрузка в мелких кейсах, где нужен один эффект и поле в стейте, можно писать 2 строки вместо 10.
Sergey
Danila
Пусть сова меня поправит, конечно, но кажись так
Anonymous
нет, наоборот. у вас есть много опыта, а я пришел спросить совета
ill-ya
ill-ya
Серьезно, помогает иногда проверится и по возвращении решение приходит.
Danila
Просто useMousePosition более декларативно, чем писать всю логику происходящего прямо тут
Danila
Тут ты пишешь x = useMousePosition(), а там ты сидишь ковыряешь детали реализации и ковыряешь их внутри компонента, что важно
Danila
Для этого изгобрели HOC, насколько я помню, но это привело к HOChell
Anonymous
Ребят, подскажите пожалуйста
Есть родительский компонент в котором есть стэйт. И есть дочерний элемент, в котором инпут со значением стэйта родительского компонента. Для него стоит onChange который тоже находится у родителя. И тут получается петля: в onChange ставится стэйт, а value у инпута стоит то же зачение с стэйта родителя (через props). В итоге получается что значение инпута не меняется вообще. Как можно это решить?
Cenator 🐈
Sergey
Evgeniy 🍀
Карамультук
Cenator 🐈
Anonymous
Есть мысль сделать у дочернего компонента свой стэйт, чтобы оборвать эту петлю
Danila
Bogdan
в каких?
сделать что то только при апдейте , а не при первом рендере поидее
Карамультук
Bogdan
Sergey
https://reactjs.org/docs/hooks-faq.html#do-hooks-cover-all-use-cases-for-classes
Danila
Если под каждым декларативным кодом лежит императивный - то это и есть разность уровней абстракции
Anonymous
Sergey
ведь читать документацию так сложно
https://ru.reactjs.org/docs/hooks-faq.html
Sergey
Bogdan
а, увидел
Cenator 🐈
Sergey
Bogdan
componentDidCatch
а вот кейс, обновляться после апдейта, но не при маунте, можно по условию смотреть, а если старый пропс нужен, с помощью useRef достать?
Anonymous
хуки это тролинг который зашел слишком далеко
Bogdan
что бы сравнить
Алексей
Алексей
Anonymous
сначала не надо писать класс а потом не надо писать тип. и вот весь мир пишет неотлаживаемый треш на пыхе
Danila
Дело не в этом
А в чём же? Если я пишу getItem('name'), а не пишу как её достать - это не декларативность?
Sergey
Sergey
хуки отлично отлаживаются
Danila
Или декларативны только языки разметки тогда или чего :(
Sergey
Sergey
описывание зависимостей — декларативность
Daniil