Контейнеры и компоненты
ОБНОВЛЕНИЕ 2018: Вышло второе издание (современный код и версии пакетов, данное издание УСТАРЕЛО)
На канале так же проводятся бесплатные вебинары, публикуются переводы и авторские материалы, присоединяйтесь!
Контейнеры и компоненты
Прежде чем мы разобьем App.js на компоненты User.js и Page.js хотелось бы отметить про разделение на "компоненты" и "контейнеры", иначе называемые: "глупые" и "умные" компоненты, "Presentational" и "Container" и быть может как-то еще.
Позволю себе в очередной раз прибегнуть к офф.документации и перевести таблицу различий, которая отлично и кратко отражает суть.
Компонент (глупый) | Контейнер (умный) | |
Цель | Как это выглядит (разметка, стили) | Как это работает (получение данных, обновление состояния) |
Осведомлен о Redux | Нет | Да |
Для считывания данных | Читает данные из props | Подписан на Redux state (состояние) |
Для изменения данных | Вызывает callback из props | Отправляет (dispatch) Redux действие (actions) |
Пишутся | Вручную | Обычно, генерируются Redux |
Магия таблиц обычно проявляется не сразу. Если переписать наше приложение, а потом взглянуть сюда еще раз - многое станет гораздо яснее. Предлагаю так и поступить. Поехали!
Создадим компоненты.
src/components/User.js
src/components/Page.js
Наш файл App.js уже практически и есть container, он даже лежит в соответствующей папке. Изменим-с...
src/containers/App.js
Теперь можно обновлять компоненты Page и User независимо друг от друга. Чем мы и займемся в следующей главе, изучая actions.
Last updated