169 похожих чатов

Ребят, привет, хардкорный Angular разработчик в чате. Дали по работе

сделать проект на дизайн системе, которая написана на React, использовал NextJS.

Но во время написания, внезапно понял, что вообще не выкупаю React. Объясните тупому зачем нужны функциональные компоненты?

Особенно напрягает, что хуки нельзя выносить во внешнюю функцию или ставить под условия, разве это удобно? В итоге мой компонент сильно раздулся и превратился в свалку кода.

27 ответов

16 просмотров

Чтобы экземпляры классов каждый раз не создавать. Это дорого. Хуки можно выносить во внешнюю функцию. А вот по условию - да, нельзя, ибо на одну функцию все хуки должны запускаться всегда в одном порядке - это позволяет реакту корректно сохранять состояния хуков между множеством useState и useEffect запросах. Нужны хуки по условию - создавай компоненты, в одних из которых нужный тебе хук, а в других - нет и по условию рендерь компоненты

Максим- Автор вопроса
Идель Гатауллин
Чтобы экземпляры классов каждый раз не создавать. ...

Да, но разве мы не теряем наследование? Мы разрабатываем крупные бизнес приложения, и переиспользование логики очень частый кейс у нас. Да и не очень понятно как функциональные компоненты работают. Если я вызываю функцию, разве все хуки не должны заново инициализироваться? Что почитать, чтобы разобраться?

Максим- Автор вопроса
Raman
Документацию

Там очень все скудно описано, мне бы какой нить хороший Deep Dive. В документации описаны хуки и что они делают, а вот как это все устроено, не понятно.

Максим
Там очень все скудно описано, мне бы какой нить хо...

Для того что бы понять что компоненты можно переимпользовать deep dive не нужен

Максим
Там очень все скудно описано, мне бы какой нить хо...

https://habr.com/ru/companies/otus/articles/667706/ https://habr.com/ru/companies/otus/articles/668700/ https://habr.com/ru/companies/otus/articles/669962/ https://habr.com/ru/companies/otus/articles/696610/ https://habr.com/ru/companies/otus/articles/677208/ Удачи)

Максим
Да, но разве мы не теряем наследование? Мы разраба...

На заре реакта мы отказались от наследования в пользу композиции. И не жалеем

Максим- Автор вопроса
Raman
Для того что бы понять что компоненты можно переим...

Ой да там какая то каша. Например, когда нужно использовать memo, когда нет, так и не понял. Когда компоненты перерисовываются? А если родитель перерисовываетя, дети тоже? Как работает SSR с хуками? Почему когда я добавил iframe (был в коде счётчик Метрики) NextJS нарисовал компонент дважды? И так далее... Слишком много вопросов, слишком мало ответов)

Максим
Ой да там какая то каша. Например, когда нужно исп...

Я изучаю реакт уже третий год и сам до конца не знаю всех ответов, ты хочешь за пару дней?

Максим
Ой да там какая то каша. Например, когда нужно исп...

NextJS - там такая охереть какая большая дока. И без базовых знаний react-а туда вообще нельзя лезть

Raman
Сочувствую

А ты знаешь?

Raman
Да

Напомни свой опыт работы с реакт

Максим- Автор вопроса
Идель Гатауллин
NextJS - там такая охереть какая большая дока. И б...

Ну как, я когда React вышел, его юзал, тогда было все просто и понятно. Есть класс и JSX, нужно поменять state - юзай setState. Нужно прокидывать state, юзай контекст. Потом придумали Redux. Ну а потом я ушел на Angular разработку, а там все переворотили) Я все сторонился всего этого, ну вот приходится вкатываться...

Максим- Автор вопроса

Столкнулся к некоторыми проблемами при разработке SSR React приложения, скорее вопрос не к хукам, а в целом про работу SSR в React.

Максим
Ой да там какая то каша. Например, когда нужно исп...

А шо не так с перерисовкой компонентов?)) Яж не отстану

Максим
Столкнулся к некоторыми проблемами при разработке ...

Типо про серверный компоненты и клиентские?

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Карта сайта