react-native - React Native Navigation 和 Redux Persist

标签 react-native redux react-native-navigation redux-persist

我正在尝试将 redux-persist 与 wix react-native-navigation 集成。但是,我找不到任何说明集成这两个库所需的样板代码的示例或文档。

我想知道如果有人解决了这个问题,是否有人愿意分享他们的解决方案?

最佳答案

首先,基本设置应该与使用或不使用 react-native-navigation 类似,如 in the documentation 所述。在 store.js :

import { persistStore, persistCombineReducers } from 'redux-persist'
import storage from 'redux-persist/es/storage' // default: 
localStorage if web, AsyncStorage if react-native
import reducers from './reducers' // where reducers is an object of 
reducers

const config = {
  key: 'root',
  storage,
}

const reducer = persistCombineReducers(config, reducers)

function configureStore () {
  // ...
  let store = createStore(reducer)
  return store

  // We'll skip persistStore for now
  // let persistor = persistStore(store)
  //return { persistor, store }
}
persistStore call 被注释掉了,我们将在下面这样做。 persistStore方法在其第三个参数中接受回调。在状态恢复/再水化后执行回调。这很好,因为这意味着 我们可以延迟启动屏幕直到状态重新水化 .

假设您在 App.js 中有以下引导代码:
store = configureStore()

registerScreens(store, Provider)

Navigation.startTabBasedApp({
  tabs: [{...},]
})

现在我们可以添加 persistStore 并将您的引导代码包装在其中,如下所示:
store = configureStore()

persistStore(store, null, () => {
  registerScreens(store, Provider)

  Navigation.startTabBasedApp({
    tabs: [{...},]
  })
})

笔记:
在 v4 中,您通过 配置而不是 :persistStore(store, config, callback)

关于react-native - React Native Navigation 和 Redux Persist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47732500/

相关文章:

javascript - 如何重置 Redux 存储的状态?

javascript - Normalizr - 如何生成与父实体相关的 slug/id

javascript - 使用 RxJS switchMap 仅取消订阅具有相同请求 URL/操作负载的流(redux-observable 史诗)

react-native - 如何避免 createStackNavigator 崩溃 react native 应用程序?

javascript - 每次映射每个元素时调用函数

javascript - 如何使 React Native Animated.View 可点击?

ios - StatusBar 背景色 iOS React Native

android - React Native Android 应用白屏无法启动

react-native - 在堆栈导航器托管的屏幕内访问 `headerRight`

react-native - 使用 Spotify 登录后无法返回我的应用程序