Expo React本机应用程序+ Redux-Persist:AsyncStorage问题

时间:2019-10-28 12:52:33

标签: reactjs react-native expo asyncstorage redux-persist

我刚刚使用{{1}开始了一个新的 Managed Expo React Native项目(Expo SDK 35 ,React Native 0.5.9 )。 },但即使是带有redux / redux-persist的新博览会项目,当前也会在下面抛出错误。


使用redux-persist@6.0.0中的AsyncStorage

我们收到错误:

  

redux-persist:需要config.storage。尝试使用提供的存储引擎之一react-native


使用import storage from 'redux-persist/lib/storage'中的AsyncStorage

我们收到错误:

  

[@ RNC / AsyncStorage]:NativeModule:AsyncStorage为空。


使用@react-native-community/async-storage中的storage

我们收到错误:

  

console.error:“ redux-persist无法创建同步存储。回退到noop存储。”


问题:我们如何在不退出的情况下解决此问题?谢谢!


redux-persist/lib/storage代码

注意:先前的尝试已被注释掉:

redux-persist

4 个答案:

答案 0 :(得分:2)

对于 React Native 下面的代码不起作用

import AsyncStorage from '@react-native-async-storage/async-storage';

const persistConfig = {
    key: 'root',
    AsyncStorage
}

因为 persistConfig 需要一个键 storage

低于 persistConfig 适用于 React Native。

import AsyncStorage from '@react-native-async-storage/async-storage';

const persistConfig = {
    key: 'root',
    storage: AsyncStorage
}

答案 1 :(得分:0)

此导入适用于Web App:

import storage from 'redux-persist/lib/storage'

对于React Native,您应该使用以下导入:

import AsyncStorage from '@react-native-community/async-storage';
import { createMigrate, persistStore, persistReducer } from "redux-persist";
import reducer from "../reducers";

const persistConfig = {
    key: 'root',
    version: 0,
    //...
    storage: AsyncStorage
}

const persistedReducer = persistReducer(persistConfig, reducer);

答案 2 :(得分:0)

这可能是图书馆链接问题。

确保您跑步 react-native link @react-native-community/async-storage

我还建议转到您的ios文件夹并运行pod install

如果您不使用Cocoapods,请查看here进行手动链接。

答案 3 :(得分:0)

  1. 纱线添加@react-native-async-storage/async-storage
  2. 从'@react-native-async-storage/async-storage'导入AsyncStorage; const authPersistConfig = { 键:'认证', stateReconciler:autoMergeLevel2, 存储:异步存储, 白名单:['isAuthenticated', 'sessionToken', 'userId'], };

为我工作