React native 如何在React Native中的LocalStorage中存储值
我是React Native的新手,我正在创建一个应用程序,需要在本地存储中存储值,比如Android中的SharedRef Ex:如果用户登录,则控件应转到仪表板,否则应显示登录屏幕React native 如何在React Native中的LocalStorage中存储值,react-native,React Native,我是React Native的新手,我正在创建一个应用程序,需要在本地存储中存储值,比如Android中的SharedRef Ex:如果用户登录,则控件应转到仪表板,否则应显示登录屏幕 提前感谢您您不能在React Native中使用本地存储,您可以使用 编辑:您也可以使用类似的商店来处理此问题。有几个选项可以执行此操作 对于最基本的东西,您可以从react native使用,但还有其他选项,如和,它们是在设备上存储数据的库 如果正在使用,还可以使用redux persist 编辑 正如@hon
提前感谢您您不能在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本机异步存储
(此答案建议)仍然没有,很遗憾。请您标记正确的答案好吗?谢谢