我一直试图将输入数据保存在异步存储中,但是每当我在输入后返回时,它都会显示以前的数据,而不是更新的数据。这是我认为需要进行一些更改的代码。
constructor(props) {
super(props)
this.state = {
userData: {
address: ''
}
}
}
saveAddressEdit = (fieldName, fieldValue) => {
AsyncStorage.setItem(userData.address, fieldValue)
}
render() {
const {address} = this.state.userData
return (
<Input placeholder=" Type your Address:"
onChangeText={(address) => this.setState({address})}
value={address} />
<Button full danger onPress={()=>this.saveAddressEdit('address', address)} style={{backgroundColor:'#ff0000'}}>
);
}
谢谢。
答案 0 :(得分:0)
如果您要使用AsyncStorage保留组件生命周期中的地址,则应首先正确保存它,并在回到屏幕上后,将其提取并填充回您的状态,因为需要使用以下命令重新初始化组件的状态您的AsyncStorage。
以下代码应有助于将地址初始化回存储的地址:
componentDidMount () {
AsyncStorage.getItem('address').then(value => {
if (value) {
this.setState({address: value});
}
})
}
,下面指定了将数据设置为AsyncStorage的正确方法:
saveAddressEdit = async (fieldName, fieldValue) => {
await AsyncStorage.setItem(fieldName, fieldValue)
}
或者您也可以像我在getItem
中在setItem(fieldName, fieldValue).then(value => console.log('saved'))
中所做的那样以诺言方式,但是由于我们不需要处理then
中的任何事情,因此我拒绝使用诺言在这样的地方。
希望这会有所帮助。快乐编码:)