我已经在asyncstorage中存储了一个JSON对象,现在我想检索其值。
在实际代码上,打印的值是[对象对象]。
我想打印嵌套在对象内的JSON值。
有什么提示?
import React, { Component } from 'react';
import {
Text,
} from 'react-native';
class Inside extends Component {
render() {
async function getItem(item) {
try {
const value = await AsyncStorage.getItem(item).then((val) => {
return JSON.parse(val);
});
return value;
} catch (err) {
if(err) {
throw err;
}
}
}
return (
<Text>{getItem('userdata').toString()}</Text>
);
}
}
export default Inside;
如果您有stringify {email {test@test.com'}并使用asyncstorage存储它,则可以解析电子邮件的值:
let value = await getItem('userdata');
return (
<Text>{JSON.parse(value).email}</Text>
);
您的班级有一些问题。
理想情况下,您不需要渲染中的功能或直接函数调用(尤其是异步功能)。
正确的方法是创建在渲染之外的异步函数,在constructor
或componentDidMount
生命周期期间调用该功能,发送结果以使用SetState更新组件状态,并在渲染中引用该状态。/p>
这将或多或少... React 方式:
class Inside extends Component {
constructor() {
super()
this.state = {
itemString: "",
}
this.item = this.getItem('userdata')
}
async getItem(item) {
try {
const value = await AsyncStorage.getItem(item).then(val => {
this.setState({ itemString: val })
return JSON.parse(val)
});
return value
} catch (err) {
throw err
}
}
render() {
return (
<Text>{this.state.itemString}</Text>
);
}
}
export default Inside