Могу ли я использовать альтернативные магазины в нескольких компонентах в реакции?

Например, на одной странице я хочу использовать UserStore в МНОГИХ компонентах. Можно ли так использовать?

  1. Если компоненты являются дочерними для UserComponent, я должен объявить {...props} в каждом дочернем элементе?? или можно использовать дублирующую накладную инъекцию во многих дочерних компонентах?

  2. Если компоненты находятся вне UserComponent, можно ли объявить UserStore во многих компонентах дубликатами?

Что такое лучшая практика?

<Component1>
  <UserComponent>    < --- UserStore : get states to props
    <Component1 />

    <Component2>
      <Component3>
        <Component4>
          <Component5 /> < --- UserStore : get states to props
        </Component4>
      </Component3>
  </UserComponent>
</Component1>

<Component6>
  <Component7></Component7> < --- UserStore : get states to props
</Component6>

1 ответ

Решение

Здесь есть много точек зрения. Я признаю, что я не использовал alt.js, так что, может быть, есть неубедительные аспекты, которые я не рассматриваю.

Это сказал;

Flux Documentation FB предлагает лучшую практику в этом направлении. Их архитектурное предложение состоит в том, чтобы использовать две категории компонентов; Контейнеры и Представления.

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

Представления получают всю свою информацию как реквизит (без связи с магазином).

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

Другие вопросы по тегам