使用未说明的

时间:2018-03-08 00:30:42

标签: reactjs state-management unstated

我正在尝试unstatedhttps://github.com/jamiebuilds/unstated)并且喜欢它的简单性,但却遇到了意想不到的行为。在最顶层,我有:

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

然后沿着我的组件树,我使用类似的东西再次访问商店:

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

只要我的树保持不变,这就很有效。只要我有一个需要重建叶子的状态更改,我的数据容器中的状态对象就会被重新初始化并消失。我做错了什么?

2 个答案:

答案 0 :(得分:2)

我认为你可以通过两种不同的方式解决这个问题:

  1. 公开Container的实例,而不是类。
  2. 实例化容器并将其注入<Provider>
  3. 在第一个选项中,实例在每个import上保持不变,您将拥有<Subscribe to={[instance]}>Unstated doc

    在第二个中,您可以执行<Subscribe to={[ContainerClass]}>但是如果通过<Provider>注入了该类的实例并且使用该实例而不是重新实例化,则Unstated将尝试解析。 Unstated doc

答案 1 :(得分:1)

我通过将Provider移动到App级别,在接收props /重新渲染的任何组件上方来解决此问题。