Реагировать на лучшие практики: передать состояние ребенку или попросить ребенка проверить состояние напрямую? - PullRequest
0 голосов
/ 12 июня 2018

Я использую реаги / редукс.У меня есть программа, которая состоит из двух компонентов, называть их foo и bar.Foo необходимо установить состояние, которое будет использовать bar для определения способа рендеринга.У меня есть foo, использующий диспетчер для отправки действия, а редуктор использует действие для установки глобального состояния, пока все хорошо.

У меня вопрос, кто должен его загружать.Лучше ли иметь мой индекс (который отображает foo и bar) для проверки состояния, а затем передать значение состояния в bar в качестве опоры, или чтобы bar вырезал среднего человека и проверял состояние напрямую.

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

1 Ответ

0 голосов
/ 12 июня 2018

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

Здесь у вас есть компонент представления, так как вы можете видеть, что он не имеет отношения к реакции.

const TodoList = ({ todos, onTodoClick }) => (
  <ul>
    {todos.map((todo, index) => (
      <Todo key={index} {...todo} onClick={() => onTodoClick(index)} />
    ))}
  </ul>
)

Чтобы иметь контейнерный компонент, мы бы connect запустили этот компонент и подписали бы его на состояние реакции, например:

const VisibleTodoList = connect(
  mapStateToProps,
  mapDispatchToProps
)(TodoList)

Вы можете получить больше информации здесь

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