使用mobx-persist和AsyncStore保持数据

时间:2019-12-12 14:45:06

标签: react-native mobx asyncstorage mobx-persist

我正在尝试使用AsyncStorage使用mobx-persist('@ react-native-community / async-storage')持久性。我的实现基本上是这样的:https://github.com/pinqy520/mobx-persist。我可以看到我的商店处于水化状态(在商店本身的构造函数中)。我也可以在组件中访问我的商店,但是在应用程序启动之间不会保留任何更改。 mobx-persist甚至适合吗?我想念什么?文档是琐碎,贫乏和过时的,以及相应的样本(对于任何反应,*看起来都是很典型的。)

更新:只是注意到它正在读取componentDidMount中的失败。看起来存储稍后会在componentDidMount中被水化。知道为什么吗?

1 个答案:

答案 0 :(得分:0)

结果发现商店确实确实在后来被水化。我已将商店属性添加到指示的水合作用完成状态(注意,我没有坚持下去):

  @observable hydrated = false;

  constructor() {
    hydrate('myStore', this).then(() => {
      this.hydrated = true;
    });
  }

然后在我的组件中,我开始聆听补水的完成情况:

    when(
      () => this.props.observableStore.hydrated,
      () => this.doSomething(),
    );

但是,以上内容不足以使其起作用。我还必须添加另一个babel插件,以便react-native / decorators / Flow不会互相干扰-这实际上是解决方案的关键:

["@babel/plugin-proposal-class-properties", { "loose": true}]