我是React Native的新手,但是我已经开始使用它来开发一个应用程序,用户可以在其中上传帖子。在“发布”屏幕上,有两个TextInput,一个用于标题,另一个用于主体。我希望该应用程序能够保存草稿,以防用户关闭该应用程序,因此进度不会丢失。我以为将AsyncStorage和AppState结合使用可以完成这项工作,但是有些事情没有按预期进行。
export default class PublishScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
title: '',
body: ''
};
this._getData();
}
_getData = async () => {
await this.setState({
'title': await AsyncStorage.getItem('title') || '',
'body': await AsyncStorage.getItem('body') || ''
});
};
componentDidMount() {
AppState.addEventListener('change', this._handleAppStateChange);
}
componentWillUnmount() {
AppState.removeEventListener('change', this._handleAppStateChange);
}
_handleAppStateChange = async (nextAppState) => {
if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
// App is going to be in the foreground
this._getData()
} else {
// App is going to be closed/background, save the data
await AsyncStorage.setItem('title', this.state.title);
await AsyncStorage.setItem('body', this.state.body);
}
this.setState({appState: nextAppState});
};
}
这种方法似乎在开发人员模式下有效,但是一旦我在发布模式下构建应用程序,数据就不会被保存或还原,我不确定是哪里出错了。
我做错了什么,我是否仍以正确的方式来制作功能?