避免使用未声明的存储重新初始化



我正在尝试unstated(https://github.com/jamiebuilds/unstated(,喜欢它的简单性,但遇到了意外的行为。 在顶级,我有:

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

然后沿着我的组件树向下,我再次使用如下方式访问商店:

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

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

我认为

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

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

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

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

我通过将Provider移动到App级别来解决此问题,高于任何接收/re-renders 的组件props

相关内容

  • 没有找到相关文章

最新更新