React Native-在应用关闭/进入后台之前将数据保存到AsyncStorage

时间:2019-12-29 18:39:18

标签: react-native

我是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});
    };
}

这种方法似乎在开发人员模式下有效,但是一旦我在发布模式下构建应用程序,数据就不会被保存或还原,我不确定是哪里出错了。

我做错了什么,我是否仍以正确的方式来制作功能?

0 个答案:

没有答案