我在我正在与我的团队合作的反应原生应用程序中持久保存用户数据时遇到问题。我们有一个带有活动列表的应用程序,当您点击某个活动时,它会打开活动详情页面并显示一个菜单,选择是/否/可能(出勤菜单),用户可以切换选择是否他们正在参加此次活动。我们的代码如下所示:
import React from 'react';
import { AsyncStorage, Text, View, StyleSheet, Picker } from 'react-native';
export class PickerMenu extends React.Component {
state = { choice: '' }
componentDidMount = () => AsyncStorage.getItem('choice').then((value) => this.setState({ 'choice': value }))
setName = (value) => {
AsyncStorage.setItem('choice', value);
this.setState({ 'choice': value });
}
render() {
return (
<View>
<Picker selectedValue = {this.state.choice} onValueChange = {this.setName} itemStyle = {styles.item}>
<Picker.Item label = "Yes" value = "yes" />
<Picker.Item label = "Maybe" value = "maybe" />
<Picker.Item label = "No" value = "no" />
</Picker>
</View>
);
}
}
我们在Xcode上运行构建。我们希望用户的选择在页面刷新或应用程序关闭后仍然存在 - 这仍然适用于用户选择的选项,每个事件保持不变。例如。如果他们为事件1选择“可能”,则我们的应用中的每个其他事件都会突出显示“可能”选项。
我们想到了获取唯一的事件ID并将其实现到AsyncStorage函数中,但我们不确定如何执行此操作。
任何帮助都会很棒,非常感谢 - 谢谢!
在这种情况下,您需要使用async / await存储在异步存储中,如下所示:
setName = async (value) => {
await AsyncStorage.setItem('choice', value);
this.setState({ 'choice': value });
}
希望我帮助过!
一些有用的链接:
https://facebook.github.io/react-native/docs/asyncstorage.html