首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免未声明的存储重新初始化

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

Stack Overflow用户
提问于 2018-03-08 08:30:42
回答 2查看 739关注 0票数 2

我正在尝试unstated (https://github.com/jamiebuilds/unstated),我喜欢它的简单性,但体验到了意想不到的行为。在顶层,我有:

代码语言:javascript
复制
<Provider>
  <Subscribe to={[MyDataContainer]}>
    {myDataStore => (
      <TopLevelComponent dataStore={myDataStore} />
    )}
  </Subscribe>
</Provider>

然后沿着我的组件树往下走,我再次使用如下代码访问存储:

代码语言:javascript
复制
  <Subscribe to={[MyDataContainer]}>
    {myDataStore => (
      <Leaf dataStore={myDataStore} />
    )}
  </Subscribe>

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

EN

回答 2

Stack Overflow用户

发布于 2018-05-24 20:50:10

我认为你可以用两种不同的方法来解决这个问题:

容器公开容器的实例,而不是class.

  • Instantiate容器,并将其注入到<Provider>.

在第一个选项中,实例在每个import上保持不变,您将拥有<Subscribe to={[instance]}>Unstated doc

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

票数 2
EN

Stack Overflow用户

发布于 2018-03-09 04:29:45

我通过将Provider移到App级别解决了这个问题,这个级别高于任何接收props/重新渲染的组件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49163541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档