首页 文章

脱机状态不使用redux-offline进行补液

提问于
浏览
0

我正在使用redux-offline来处理我的应用程序内的离线交互 . 应用程序重新启动时,我的redux商店中的脱机状态不会保留 .

例如,我的应用程序处于脱机状态,用户以调用要调度的操作的方式与应用程序进行交互 . Redux-offline将操作转移到redux存储的脱机状态中的outbox阵列,该应用程序应在应用程序重新联机时重试该操作 . 如果我执行此操作并在脱机状态下排队操作,然后重新启动应用程序(当仍处于脱机状态时),redux存储将保留除脱机状态之外的所有内容,因此我将丢失已排队的项目 .

我的商店配置代码如下 . 我以某种方式编写它,以便显示启动画面,直到redux存储被重新水合 .

import React, { Component } from "react"
import { AsyncStorage } from "react-native"
import { Provider } from "react-redux"
import { applyMiddleware, compose, createStore } from "redux"
import thunk from "redux-thunk"
import { autoRehydrate, persistStore } from "redux-persist"
import logger from "redux-logger"
import { offline } from "redux-offline"
import offlineConfig from "redux-offline/lib/defaults"
import reducers from "./redux/modules"
import MyApp from "./MyApp"
import SplashScreen from "./components/home/SplashScreen"

const store = createStore(
  reducers,
  undefined,
  compose(applyMiddleware(thunk, logger), offline(offlineConfig))
)

export default class Setup extends Component {
  constructor(props) {
    super(props)
    this.state = {
      rehydrated: false
    }
  }

  componentWillMount() {
    persistStore(store, { storage: AsyncStorage }, () => {
      this.setState({ rehydrated: true })
    })
  }

  render = () =>
    !this.state.rehydrated ? (
      <SplashScreen />
    ) : (
      <Provider store={store}>
        <MyApp />
      </Provider>
    )
}

1 回答

  • 0

    使用redux工具检查 - 可能是离线存储已经重新水化,但它会立即被设置状态的事件更改,更新到最新的redux-offline应该修复它

相关问题