Size: a a a

JavaScript.Ninja

2020 July 24

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
El Nasurov
Имеется в виду, что отдельно проверяется запустился ли вообще сам сайд эффект, а в другом блоке уже логика того, как компонент реагирует на его ответы, так ?
народ все реже делает запросы непосредственно из реакт компонентов
хотя появляются всякие либы типа useSWR, react-query для этого
но чаще при использовании стейт менеджеров типа redux, effector, reatom, mobx и прочих
запросы к серверу выносят из компонентов в специально отведенные для них места
источник

EN

El Nasurov in JavaScript.Ninja
🅅aleriy 🄺obzar
народ все реже делает запросы непосредственно из реакт компонентов
хотя появляются всякие либы типа useSWR, react-query для этого
но чаще при использовании стейт менеджеров типа redux, effector, reatom, mobx и прочих
запросы к серверу выносят из компонентов в специально отведенные для них места
А что может быть специально отведенным местом ?

Вроде как раньше в реакте юзали разделение на container-component (как просто view) и вся логика даты была в container.

Имеется в виду, какие-то схожие с этим приемы ?
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
El Nasurov
А что может быть специально отведенным местом ?

Вроде как раньше в реакте юзали разделение на container-component (как просто view) и вся логика даты была в container.

Имеется в виду, какие-то схожие с этим приемы ?
в redux, это redux-thunk или redux-saga
в effector, это effects
и тд
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
лично мое мнение - фетчинг данных изнутри компонентов очень усложняет приложение
особенно когда оно разрастается
приходится придумывать всякое для управление кешированием данных, контролировать, чтобы лишний раз рендеринг не дай бог не произошел непредвиденный и соответственно запрос не улетел на сервер не нужный
источник

EN

El Nasurov in JavaScript.Ninja
🅅aleriy 🄺obzar
в redux, это redux-thunk или redux-saga
в effector, это effects
и тд
Но при этом сами данные, в таких подходах, хранятся в том же компоненте, который их рендерит ? Или где-то рядышком ?

Ведь, если уносить их в тот редакс, это ведь неправильно, что в нем будут специфические данные, а не общие для всего app
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
мнения специалистов разнятся по этому поводу и в итоге каждый решает сам для себя в зависимости от специфики проекта
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
где и как ему хранить данные и как ими управлять
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
возьми 5 разных первоклассных фронтендеров тимлидов и у каждого будет свое особое мнение по этому поводу :))
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
но безусловно есть уже сложившаяся практика на этот счет
если и делать фетчинг из компонентов, то это либо HOC (containers), либо aka page components которые рендерит роутер
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
либо специально отведенное место в стороннем стейт менеджере
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
хранить образ приложения в том же редакс лично я никогда не считал чем то зазорным
источник

IK

Illya Klymov in JavaScript.Ninja
🅅aleriy 🄺obzar
либо специально отведенное место в стороннем стейт менеджере
Или декларативное описание на самих компонентах
источник

IK

Illya Klymov in JavaScript.Ninja
Что последнее время мне нравится больше всего
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
Illya Klymov
Или декларативное описание на самих компонентах
ну когда фетчинг отдают либе типа useSWR которая умеет кешировать и еще чего то там делать, то наверное это норм
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
Illya Klymov
Что последнее время мне нравится больше всего
кстати, какие минусы в этом подходе на твой взгляд?
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
а то я давно логика вытаскивания данных с сервера не затаскивал в сами компоненты
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
разве что apollo client когда юзаю
источник

IK

Illya Klymov in JavaScript.Ninja
Минусы в том что сайд эффекты становятся непредсказуемыми в плане очередности и так далее
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
кстати, а как тестировать такой компонент с сайд эффектом правильно?
источник

🅅🄺

🅅aleriy 🄺obzar in JavaScript.Ninja
или ёто собственно в эффект выносится и тестится сам эффект?
источник