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

J.s*_*row 9 react-native

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

例如:如果用户登录,则控制权应转到仪表板,否则应出现登录屏幕

先感谢您

Sof*_*ory 13

对于仍在寻找此功能的任何人,RN异步存储已被弃用。你可以使用这个:https : //github.com/react-native-community/react-native-async-storage


Rah*_*hra 8

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

AsyncStorage.setItem('access_token', responseData.data.access_token);
Run Code Online (Sandbox Code Playgroud)

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

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));
  });
};
Run Code Online (Sandbox Code Playgroud)

如何导入?

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

isSignedIn()
    .then(res => {
      this.changeLoaderStatus();
      if(res){
        res; //this is your token 
      }
    }
Run Code Online (Sandbox Code Playgroud)

您将从以下网址获取该包:

https://github.com/react-native-async-storage/async-storage


saj*_*asi 7

您可以使用同步存储更易于使用比异步存储:

import SyncStorage from 'sync-storage';

...

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

const result = SyncStorage.get('foo');
console.log(result); // 'bar'
Run Code Online (Sandbox Code Playgroud)


mat*_*ira 6

有几种选择可以做这样的事情.

对于大多数基本的东西,您可以使用来自react-native的AsyncStorage,但还有其他选项,如Realm和SQLite,它们是存储设备上数据的库.

如果您使用的是Redux,还可以使用redux-persist.


Dyo*_*Dyo 4

你不能LocalStorage在React-Native中使用,你可以使用AsyncStorage代替。

编辑:您还可以使用像redux这样的商店来处理这个问题。