如何在React Native中的LocalStorage中存储值

时间:2017-11-27 11:09:46

标签: react-native

我是React Native的新手,我正在创建一个应用,我需要在Android中将值存储在本地存储中,例如 SharedPref

例如:如果用户登录,则控件应转至控制板,否则应显示登录屏幕

提前谢谢

9 个答案:

答案 0 :(得分:6)

有几种方法可以做到这一点。

对于大多数基本操作,您可以从react-native使用AsyncStorage,但还有其他选项,例如Realm和SQLite,它们是用于在设备上存储数据的库。

如果您使用Redux,也可以使用redux-persist。

答案 1 :(得分:1)

您无法在React-Native中使用LocalStorage,您可以使用AsyncStorage代替。

编辑:您还可以使用redux之类的商店来处理此问题。

答案 2 :(得分:1)

不要使用AsyncStorage,因为Android上存在许多错误,并且RN团队似乎对修复它没有任何兴趣(像这样几年)。

简而言之:不要使用AsyncStorage

答案 3 :(得分:1)

对于任何仍在寻找它的人,RN async storage已被弃用。您可以使用:https://github.com/react-native-community/react-native-async-storage

答案 4 :(得分:0)

AsyncStorage是存储一些可以使用的数据的最佳选择,如下例所示:

AsyncStorage.setItem('access_token', responseData.data.access_token);

这是我单独的组件,您可以在其中创建单独的函数以导入任何where示例:

export const isSignedIn = () => {
  return new Promise((resolve, reject) => {
    AsyncStorage.getItem(USER_KEY)
      .then(res => {
        if (res !== null) {
          resolve(res);
        } else {
          resolve(false);
        }
      })
      .catch(err => reject(err));
  });
};

如何导入?

import { isSignedIn, url } from "./Auth";

isSignedIn()
    .then(res => {
      this.changeLoaderStatus();
      if(res){
        res; //this is your token 
      }
    }

答案 5 :(得分:0)

您可以使用比异步存储更易于使用的sync storage

import SyncStorage from 'sync-storage';

...

SyncStorage.set('foo', 'bar');

const result = SyncStorage.get('foo');
console.log(result); // 'bar'

答案 6 :(得分:0)

从react native文档中:

不推荐使用AsyncStorage。

建议使用react-native-async-storage

文档链接:https://facebook.github.io/react-native/docs/asyncstorage.html

希望你很清楚。

答案 7 :(得分:0)

根据官方doc AsyncStorage已弃用,现在将使用@react-native-community/async-storage
因此,请按照以下步骤使用AsyncStorage

添加纱线@ react-native-community / async-storage

cd ios / && pod安装(仅适用于IOS)

存储数据

import { AsyncStorage } from 'react-native';

storeData = async () => {
  try {
    await AsyncStorage.setItem('@storage_Key', 'stored value')
  } catch (e) {
    // saving error
  }
}

读取数据

getData = async () => {
  try {
    const value = await AsyncStorage.getItem('@storage_Key')
    if(value !== null) {
      // value previously stored
    }
  } catch(e) {
    // error reading value
  }
}

答案 8 :(得分:0)

使用过的AsyncStorage

并在react native中执行所有本地存储操作,例如get和set value