2

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

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

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

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

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

4

2 回答 2

2

我认为您可以通过两种不同的方式解决此问题:

  1. 公开你的实例Container而不是类。
  2. 实例化容器并将其注入您的<Provider>.

在第一个选项中,实例在每个 上都保持不变import,您将拥有<Subscribe to={[instance]}>. 未说明的文档

在第二种情况下,您可以这样做,<Subscribe to={[ContainerClass]}>但如果有该类的实例通过注入<Provider>并使用该实例而不是重新实例化,Unstated 将尝试解析。未说明的文档

于 2018-05-24T12:50:10.263 回答
1

我通过将 移到任何接收/重新渲染的组件上方Provider的级别来解决这个问题。Appprops

于 2018-03-08T20:29:45.157 回答