Pull to refresh

Comments 10

const items = React.useState([]);
 React.useEffect(() => {
    async function fetchItems() {
      await fetched = fetchItems();
      setItems(fetched);
    }
  });

На всякий случай проверил оригинал. Да, там тот же самый код. Наверное опечатка и автор забыл (). Сейчас у него этот хук вызывается на каждый рендер. Внутри он создаёт новый метод (fetchItems). Метод не вызывается. По сути хук ничего не делает. А даже если и вызвать этот метод, то он уйдёт в себя, в вечную рекурсию, т.к. он внутри себя вызывает сам себя.


Плюс useState работает не так.


Полагаю имелось ввиду что-то вроде этого:


const [items, setItems] = useState([]);
useEffect(() => {
  fetchItems().then(setItems);
}, [] /* on mount */);

Мне кажется стоит перестать переводить medium. Особенно столь неизберательно. Количество нискосортных статей там просто зашкаливает. Автор статьи похоже свой код писал "от руки" даже не вглядываясь, что он там пишет.

Да, там действительно много статей низкого качества, однако их обычно никто и не берется переводить. А эта статья мне понравилась. Даже учитывая то, что автор оригинала так небрежно написал код.

«2. Как следует познакомьтесь с React-хуками»
Согласен что знать что это такое, но я бы порекомендовал не использовать хуки в реальных проектах.
а можно подробней почему? я изучаю реакт и планирую потом на джуна(фронт) пробоваться, но я не очень понимаю что мне надо знать для этого, т.е. что должно еще прилагаться к реакту, redux например, typescript, axios или еще что то?
хуки — в самой идее все ок, особенно для простых компонентов, ад начинается когда в компоненте на хуках много логики, в таком коде черт ногу сломит, на обычных классах проще писать такой код.

redux — я бы тоже не рекомендовал использовать, только для «shared» данных по всему приложению(хотя такое лучше избегать :) )

typescript — имхо must have

axios, lodash, etc. — на свой вкус тут абсолютно не принципиально
Логику же можно выносить в селекторы, вспомогательные функции, свои хуки создавать
Если в компоненте много логики, то её удобно вынести, например, в mobx-овый стор, а этот стор передавать во вьюшку с помощью хука, который сможет обеспечить стору жизненный цикл, например, очистку при анмаунте, или даже обновления. Весьма подходит, если надо пошарить логику между вьюшками для десктопа и мобилы.

Плюс, свои хуки для различных кейсов, где надо на события документа подписаться, или с таймерами что-нибудь, и т.д.

Понятное дело, если мы попробуем прямо в функциональном компоненте с вёрсткой что-то хитрое нарисовать хуками, это будет спагетти. Напрямую можно только по мелочи.
Почему не использовать? Если есть стабильная версия реакта которая заточена под хуки то почему бы не юзать? И все множество популярных библиотек так или иначе переходят на хуки, просто кому-то удобнее так, а кому-то по другому, в классах проще написать *некий структурированный код* — который при первичном ознакомлении интуитивно понятен, но с другой стороны зачем вызывать конструктор, баиндить контекст для какого-то компонента типа `Item` с примера. Я писал и на классовых компонентах и на хуках (последний год) как по мне если соблюдать первые 2 принцыпа солид и `Separation of concern` то можно получить такойже харашо структурированный код.
Sign up to leave a comment.