我是一个初学者,仍然尝试着学习反应本土化,所以帮帮我!
我想访问函数之外的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中的存储值可以用于其他函数中。
谢谢你贡献宝贵的时间
发布于 2019-07-06 01:54:41
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()。
发布于 2019-07-05 15:49:28
在您的代码中,abc被调用到范围之外。abc只在回调中声明。另一种方法可以是创建一个返回数据的类方法。我个人认为异步/等待语法更简洁,更容易理解.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
}
}发布于 2019-07-06 09:39:46
从“反应-本机”导入{AsyncStorage};
你现在可以用
1 :-纱线添加@react本地社区/异步存储
2:反应-本机链接@react本机-社区/异步-存储
代码:-
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
https://stackoverflow.com/questions/56905001
复制相似问题