我正在尝试unstated
(https://github.com/jamiebuilds/unstated)并且喜欢它的简单性,但却遇到了意想不到的行为。在最顶层,我有:
<Provider>
<Subscribe to={[MyDataContainer]}>
{myDataStore => (
<TopLevelComponent dataStore={myDataStore} />
)}
</Subscribe>
</Provider>
然后沿着我的组件树,我使用类似的东西再次访问商店:
<Subscribe to={[MyDataContainer]}>
{myDataStore => (
<Leaf dataStore={myDataStore} />
)}
</Subscribe>
只要我的树保持不变,这就很有效。只要我有一个需要重建叶子的状态更改,我的数据容器中的状态对象就会被重新初始化并消失。我做错了什么?
答案 0 :(得分:2)
我认为你可以通过两种不同的方式解决这个问题:
Container
的实例,而不是类。<Provider>
。在第一个选项中,实例在每个import
上保持不变,您将拥有<Subscribe to={[instance]}>
。 Unstated doc
在第二个中,您可以执行<Subscribe to={[ContainerClass]}>
但是如果通过<Provider>
注入了该类的实例并且使用该实例而不是重新实例化,则Unstated将尝试解析。 Unstated doc
答案 1 :(得分:1)
我通过将Provider
移动到App
级别,在接收props
/重新渲染的任何组件上方来解决此问题。