我正在尝试unstated (https://github.com/jamiebuilds/unstated),我喜欢它的简单性,但体验到了意想不到的行为。在顶层,我有:
<Provider>
<Subscribe to={[MyDataContainer]}>
{myDataStore => (
<TopLevelComponent dataStore={myDataStore} />
)}
</Subscribe>
</Provider>然后沿着我的组件树往下走,我再次使用如下代码访问存储:
<Subscribe to={[MyDataContainer]}>
{myDataStore => (
<Leaf dataStore={myDataStore} />
)}
</Subscribe>只要我的树保持不变,这就很有效。一旦我有了需要重新构建叶子的状态更改,我的数据容器中的状态对象就会重新初始化并被清除。我做错了什么?
发布于 2018-05-24 20:50:10
我认为你可以用两种不同的方法来解决这个问题:
容器公开容器的实例,而不是class.
<Provider>.中
在第一个选项中,实例在每个import上保持不变,您将拥有<Subscribe to={[instance]}>。Unstated doc
在第二种方法中,您可以执行<Subscribe to={[ContainerClass]}>,但Unstated将尝试解析是否存在通过<Provider>注入的该类的实例,并使用该实例而不是重新实例化。Unstated doc
发布于 2018-03-09 04:29:45
我通过将Provider移到App级别解决了这个问题,这个级别高于任何接收props/重新渲染的组件。
https://stackoverflow.com/questions/49163541
复制相似问题