Size: a a a

React — русскоговорящее сообщество

2020 July 13

И

Иван in React — русскоговорящее сообщество
Viktor Osipov
Совершенно верно.
То есть запросы к серверу, обработка и хранение данных — всё в контейнерах. А стейт-менеджер куда?
источник

DS

Dmitry Sidorov in React — русскоговорящее сообщество
Иван
То есть запросы к серверу, обработка и хранение данных — всё в контейнерах. А стейт-менеджер куда?
Хочешь добить и поиздеваться что ли?)
источник

И

Иван in React — русскоговорящее сообщество
Viktor Osipov
https://codesandbox.io/s/presentational-and-container-components-q1vid

Попробую с примером.
У нас есть презентационный компонент App , отвечающий за UI и обработку событий на нём («лямбда-адаптер» в `onChange`).
Компонент App не знает об обработке данных, эту ответственность на себя берёт его родитель.

Можно реализовать два контейнера с говорящими названиями AppWithHooks и AppWithClass, который обрабатывают данные, получаемые от дочернего App.

Мы можем безболезненно для компонента App менять реализацию обработки данных: классы, хуки, редакс, локалсторедж - нас не волнует.
Осталось только понять, зачем
источник

И

Иван in React — русскоговорящее сообщество
Dmitry Sidorov
Хочешь добить и поиздеваться что ли?)
Не, интересна логика
источник

DT

Daniil Tchernyavsky in React — русскоговорящее сообщество
Опять подходы 2015 года
источник

DT

Daniil Tchernyavsky in React — русскоговорящее сообщество
и опять те же самые обсуждения
источник

DT

Daniil Tchernyavsky in React — русскоговорящее сообщество
пишите как вам удобней, но не забывайте что после вас будут работать еще люди с вашим кодом
источник

И

Иван in React — русскоговорящее сообщество
Viktor Osipov
https://codesandbox.io/s/presentational-and-container-components-q1vid

Попробую с примером.
У нас есть презентационный компонент App , отвечающий за UI и обработку событий на нём («лямбда-адаптер» в `onChange`).
Компонент App не знает об обработке данных, эту ответственность на себя берёт его родитель.

Можно реализовать два контейнера с говорящими названиями AppWithHooks и AppWithClass, который обрабатывают данные, получаемые от дочернего App.

Мы можем безболезненно для компонента App менять реализацию обработки данных: классы, хуки, редакс, локалсторедж - нас не волнует.
Ты намеренно разделил на две части цельный кусок логики, и ввёл пять пропов чтобы что? Чтобы заменить при необходимости источник данных/обработчиков? Компонент, который принимает вот это всё — вообще нихера не переиспользуемый. Хочешь вынести логику для переиспользования? Напиши хук useTodos, меняй внутри реализацию хоть по пять раз за коммит. Разделением логики работы компонента на два «независимых» компонента добьёшься ровным счетом ничего
источник

K

Kirill in React — русскоговорящее сообщество
Иван
Ты намеренно разделил на две части цельный кусок логики, и ввёл пять пропов чтобы что? Чтобы заменить при необходимости источник данных/обработчиков? Компонент, который принимает вот это всё — вообще нихера не переиспользуемый. Хочешь вынести логику для переиспользования? Напиши хук useTodos, меняй внутри реализацию хоть по пять раз за коммит. Разделением логики работы компонента на два «независимых» компонента добьёшься ровным счетом ничего
иногда удобней работать с разделением, что бы не было кучи кода в 1 файле, вот и вся логика что ты пытаешься понять, просто удобство
источник

И

Иван in React — русскоговорящее сообщество
Kirill
иногда удобней работать с разделением, что бы не было кучи кода в 1 файле, вот и вся логика что ты пытаешься понять, просто удобство
Ну да. Кастомным хуком решается на ура. Зачем компонент для этого создавать?
источник

DT

Daniil Tchernyavsky in React — русскоговорящее сообщество
никто не против разделения, прямо в документации говорится про это и про примеры кастом хуков
источник

DT

Daniil Tchernyavsky in React — русскоговорящее сообщество
есть еще люди которые выносят всю логику вне реакта, либо большую ее часть
источник

K

Kirill in React — русскоговорящее сообщество
Иван
Ну да. Кастомным хуком решается на ура. Зачем компонент для этого создавать?
ну если можно обойтись хуком - то нет смысла, я про то когда много кода
источник

И

Иван in React — русскоговорящее сообщество
Kirill
ну если можно обойтись хуком - то нет смысла, я про то когда много кода
А когда нельзя обойтись хуком?
источник

VO

Viktor Osipov in React — русскоговорящее сообщество
Иван
То есть запросы к серверу, обработка и хранение данных — всё в контейнерах. А стейт-менеджер куда?
Контейнер предоставляет нужные данные и функции презентационному компоненту. Запросы к серверу, обработка и хранение данных могут быть реализованы как прямо в контейнере, так и вынесены «по уму» в разные модули, а контейнер только составляет композицию этих модулей для презентационного компонента.
источник

VO

Viktor Osipov in React — русскоговорящее сообщество
Иван
Ты намеренно разделил на две части цельный кусок логики, и ввёл пять пропов чтобы что? Чтобы заменить при необходимости источник данных/обработчиков? Компонент, который принимает вот это всё — вообще нихера не переиспользуемый. Хочешь вынести логику для переиспользования? Напиши хук useTodos, меняй внутри реализацию хоть по пять раз за коммит. Разделением логики работы компонента на два «независимых» компонента добьёшься ровным счетом ничего
Сейчас перевариваю...
источник

И

Иван in React — русскоговорящее сообщество
Viktor Osipov
Контейнер предоставляет нужные данные и функции презентационному компоненту. Запросы к серверу, обработка и хранение данных могут быть реализованы как прямо в контейнере, так и вынесены «по уму» в разные модули, а контейнер только составляет композицию этих модулей для презентационного компонента.
И зачем это нужно, если можно сделать то же самое кастомным хуком прямо а нужном компоненте? Чтобы описывать «тупые» компоненты, которые принимают три структуры и пять коллбэков? Они точно тупые в таком случае? Они же бессмысленны. А если у тебя нет TS с сигнатурами — так вообще пиздец, поди разбери, что за 5 пропсов принимает «тупой» компонент, как эти пропсы между собой связаны и как друг на друга влияют
источник

H

Haddock in React — русскоговорящее сообщество
Подскажите пожалуйста, почему date не заполняется данными
источник

И

Иван in React — русскоговорящее сообщество
Viktor Osipov
Контейнер предоставляет нужные данные и функции презентационному компоненту. Запросы к серверу, обработка и хранение данных могут быть реализованы как прямо в контейнере, так и вынесены «по уму» в разные модули, а контейнер только составляет композицию этих модулей для презентационного компонента.
Задумка хорошая, реализация такая себе
источник

И

Иван in React — русскоговорящее сообщество
Haddock
Подскажите пожалуйста, почему date не заполняется данными
Заполняется. Гугли асинхронный сетстейт
источник