Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 如何在React Native中的LocalStorage中存储值_React Native - Fatal编程技术网

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

React native 如何在React Native中的LocalStorage中存储值,react-native,React Native,我是React Native的新手,我正在创建一个应用程序,需要在本地存储中存储值,比如Android中的SharedRef Ex:如果用户登录,则控件应转到仪表板,否则应显示登录屏幕 提前感谢您您不能在React Native中使用本地存储,您可以使用 编辑:您也可以使用类似的商店来处理此问题。有几个选项可以执行此操作 对于最基本的东西,您可以从react native使用,但还有其他选项,如和,它们是在设备上存储数据的库 如果正在使用,还可以使用redux persist 编辑 正如@hon

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

Ex:如果用户登录,则控件应转到仪表板,否则应显示登录屏幕


提前感谢您

您不能在React Native中使用
本地存储
,您可以使用


编辑:您也可以使用类似的商店来处理此问题。

有几个选项可以执行此操作

对于最基本的东西,您可以从react native使用,但还有其他选项,如和,它们是在设备上存储数据的库

如果正在使用,还可以使用redux persist

编辑


正如@honor所说,您应该使用AsyncStorage,而不是这里引用的较旧的AsyncStorage(已弃用)

不要使用AsyncStorage,因为Android上有很多bug,而且RN团队似乎对修复它没有任何兴趣(已经有好几年了)


简而言之:不要使用AsyncStorage。对于仍在寻找此功能的任何人,RN已被弃用。您可以改为使用此选项。

异步存储是存储某些数据的最佳选项,您可以使用以下示例:

AsyncStorage.setItem('access_token', responseData.data.access_token);
这是我的单独组件,您可以在其中为导入任何位置创建单独的函数,例如:

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 
      }
    }
您可以使用比异步存储更易于使用的存储:

import SyncStorage from 'sync-storage';

...

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

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

从react原生文档:

异步存储已弃用

建议使用react本机异步存储

文档链接:

希望您清楚。

根据官方的
异步存储已被弃用,现在将使用
@react native community/async storage

因此,请按照以下步骤使用
AsyncStorage

纱线添加@react本地社区/异步存储

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
  }
}
读取数据

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
  }
}
使用异步存储


并执行所有本地存储操作,如在react native中获取和设置值,使用什么?我将Redux与Redux Persist中间件一起使用。@Spock Redux Persist使用AsyncStorages仍然是这样吗?在Redux上存储数据只是暂时的。@BrayanLoayza您可以使用Redux Persist来保持Redux状态,或者使用此列表中的一个存储引擎来保持Redux状态的一部分:您认为使用Redux Persist会比realm db?可以与Expo一起使用吗?@NikolaMihajlović,
异步存储
可以与Expo一起使用。RN的默认值是,替换的
react本机异步存储
(此答案建议)仍然没有,很遗憾。请您标记正确的答案好吗?谢谢