首页 > 解决方案 > 从异步存储恢复 MOBX 存储偶尔会出错

问题描述

我试图在我的反应原生应用程序中保持我的 mobx 状态。它在大多数情况下都有效,但经常会出现错误,我必须创建空存储并丢失状态。我希望得到一些关于如何更好地实现这一目标的建议,或者是否有人知道可能导致这种情况的原因。

这是我的做法。

主要的.tsx AppRegistry.registerComponent(APP_NAME, () => RootComponent)

根组件.tsx

export class RootComponent extends React.Component<{}, IRootComponentState> {
  public async componentDidMount(): Promise<void> {
    SplashScreen.hide()
    this.setState({ rootStore: await setupRootStore() })
  }

设置-根-store.ts

const ROOT_STATE_STORAGE_KEY = "root"

export async function setupRootStore(): Promise<IRootStore> {
  let rootStore: IRootStore
  let data: any

  const env = await createEnvironment()
  try {
    data = (await storage.load(ROOT_STATE_STORAGE_KEY)) || {}
    rootStore = RootStoreModel.create(data, env)
  } catch {
/// Errors out here
    rootStore = RootStoreModel.create({}, env)
  }

  if (__DEV__) {
    env.reactotron.setRootStore(rootStore, data)
  }

  onSnapshot(rootStore, (snapshot) => storage.save(ROOT_STATE_STORAGE_KEY, snapshot))

  return rootStore
}

有时它在 catch 块中出错,然后我只是用空商店恢复。我试图记录捕获错误,但它始终未定义

谢谢!

标签: reactjsreact-nativeasync-awaitmobxmobx-state-tree

解决方案


推荐阅读