我是一个初学者,仍然尝试学习对母语的反应,所以请帮助我!
我想在函数外部访问AsyncStorage.getItem值。 我将通过代码进一步解释
这是我的代码:
import {AsyncStorage} from 'react-native';
在screen1上设置该值
AsyncStorage.setItem('mobileno', JSON.stringify(MobileNo));
尝试在屏幕2上获取该值
AsyncStorage.getItem('mobileno', (err, MobileNumber) => {
let abc = MobileNumber;
console.log("abc value " + abc)
})
let { MobileNo } = abc;
console.log({MobileNo})
我想以let { MobileNo } = abc;
的形式访问该函数之外的abc值,但是它显示错误!
注释: [console.log("abc value " + abc)
完美运行]
错误
找不到变量abc
问题
因此,我如何在整个页面[功能之外]访问该abc或该AsyncStorage值;因为我也想在其他函数中使用该值!
简而言之,我希望AsyncStorage中存储的值可以在其他功能中使用它。
感谢您贡献宝贵的时间
答案 0 :(得分:3)
在您的代码中abc
被调用超出范围。 abc
仅在您的回调中声明。一种替代方法是创建一个返回该数据的类方法。我个人发现async / await语法更简洁,更容易理解.then()
链。
_retrieveData = async () => {
try {
const value = await AsyncStorage.getItem('mobileno');
if (value !== null) {
// We have data!!
console.log(value);
return value;
}
} catch (error) {
// Error retrieving data
}
}
答案 1 :(得分:2)
从“ react-native”导入{ AsyncStorage };
您现在可以使用
1:-纱线添加@ react-native-community / async-storage
2:-react-native链接@ react-native-community / async-storage
代码:-
import AsyncStorage from '@react-native-community/async-storage';
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
}
}
链接:-https://www.npmjs.com/package/@react-native-community/async-storage
答案 2 :(得分:0)
constructor(props) {
super(props);
this.state = {
mobileNumber: '',
};
}
componentDidMount() {
AsyncStorage.getItem('mobileno').then((mobileNo) => {
if(mobileNo){
this.setState({mobileNumber: mobileNo});
console.log(this.state.mobileNumber);
}
});
}
render() {
return(
<View>
<Text>{this.state.mobileNumber}</Text>
</View>
);
}
在这种情况下,不需要异步/等待,因为仅在完成.then()
函数的提取之后才调用getItem()
。
答案 3 :(得分:0)
使用链接
安装
$ yarn add @ react-native-community / async-storage
链接
React Native 0.60 +
CLI自动链接功能在构建应用程序时链接模块。
反应本机<= 0.59
$ react-native链接@ react-native-community / async-storage
对于使用cocoapods的iOS,请运行:
$ cd ios / && pod安装
有关手动链接指南,请参阅文档
升级到React Native 0.60+ 新的React Native具有自动链接功能,该功能可自动链接您项目中的Native模块。为了使其正常工作,请确保先取消链接异步存储:
$ react-native取消链接@ react-native-community / async-storage
用法
导入
从'@ react-native-community / async-storage'导入AsyncStorage;
存储数据
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
}
}