Восстановление хранилища MOBX из хранилища asyn c иногда дает сбой - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь сохранить состояние mobx в моем собственном приложении React. Он работает большую часть времени, но часто возникают ошибки, когда мне приходится создавать пустые хранилища и терять состояние. Я хотел бы получить несколько советов о том, как лучше достичь этого, или если кто-нибудь знает, что может быть причиной этого.

Вот как я это делаю.

main.tsx AppRegistry.registerComponent(APP_NAME, () => RootComponent)

root -component.tsx

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

setup- root -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 возникают ошибки а потом просто восстанавливаю с пустыми магазинами. Я попытался зарегистрировать ошибку перехвата, но она всегда не определена.

Спасибо!

...