在本机

时间:2017-05-24 11:32:57

标签: serialization react-native save boolean async-await

我需要在反应本机应用程序中的AsyncStorage中存储布尔值。存储的值将在整个应用程序中使用。实际上,用户会在设置页面中将变量设置为true或false,并根据该值,我在应用程序的其他页面中进行一些更改。

这是我正在使用的代码 设置页面(将值设置为true或false,但默认值为true)

    constructor(props) {
                super(props);
                this.state ={
                    status: true
                }
            };

      toggleStatus(){
                this.setState({
                    status:!this.state.status
                });

 // AsyncStorage.setItem('myCheckbox',JSON.stringify(this.state.status));

//I even hardcoded the value stored and set it to false but it didn't work 
       AsyncStorage.setItem('myCheckbox',  JSON.stringify(false));
                    }
        .. 
        <TouchableOpacity onPress={this.toggleStatus.bind(this)}>
            <Text> touch me </Text>
        </TouchableOpacity>

在我将使用存储在AsyncStorage中的值的其他页面之一:

componentDidMount() {

        const value =   AsyncStorage.getItem('myCheckbox', (value) => {
            JSON.parse(value)
            console.log("my check box value ", value)
        });

但我一直在控制台中得到这个:enter image description here

1 个答案:

答案 0 :(得分:2)

在AsyncStorage(here)的React Native文档中,它表示所有方法都返回Promise

您可以使用async/await,但我们会ES6方式。

AsyncStorage.getItem('myCheckbox').then((value) => {
 console.log(value);
});