Как избежать повторной инициализации магазина с помощью неустановленного

Я пытаюсь unstated ( https://github.com/jamiebuilds/unstated) и мне нравится его простота, но я испытываю неожиданное поведение. На верхнем уровне у меня есть:

<Provider>
  <Subscribe to={[MyDataContainer]}>
    {myDataStore => (
      <TopLevelComponent dataStore={myDataStore} />
    )}
  </Subscribe>
</Provider>

Затем, спустившись вниз по дереву компонентов, я снова захожу в магазин, используя что-то вроде этого:

  <Subscribe to={[MyDataContainer]}>
    {myDataStore => (
      <Leaf dataStore={myDataStore} />
    )}
  </Subscribe>

Это прекрасно работает, пока мое дерево остается прежним. Как только у меня есть изменение состояния, которое требует перестройки листьев, объект состояния в моем контейнере данных повторно инициализируется и стирается. Что я делаю неправильно?

2 ответа

Я думаю, что вы можете решить эту проблему двумя способами:

  1. Выставь экземпляр своего Container вместо класса.
  2. Создайте контейнер и введите его в свой <Provider>,

В первом варианте экземпляр остается неизменным на каждом importи у вас будет <Subscribe to={[instance]}>, Неустановленный документ

Во втором вы можете сделать <Subscribe to={[ContainerClass]}> но Unstated попытается решить, есть ли экземпляр этого класса, введенный через <Provider> и использовать этот экземпляр вместо повторного создания. Неустановленный документ

Я решил это, переместив Provider к App уровень выше любого компонента, который получает props/ Повторно делает.

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