保存/保持CheckBox的状态以响应本机应用程序(已选中或未选中)/提供给复选框的无效支持

时间:2017-05-26 14:22:14

标签: javascript checkbox react-native local-storage native-base

我刚刚在本机应用程序中实现了本机库中的复选框组件。每次我选中/取消选中该复选框时,某些变量会更改其状态(true或false)然后存储。根据存储在asyncStorage中的值,我可以在应用程序中进行一些更改,它可以正常工作。

我现在面临的问题是:我需要在使用应用程序时保持选中/取消选中复选框(即使从一个页面更改为另一个页面),并且在用户未更改时它无法更改(它是更改页面后始终返回默认值) 我将变量存储为字符串,但显然复选框只接受布尔变量。 PS:我试图将状态存储为布尔值,但它无效 这是代码:

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

 toggleStatus() 
{
        this.setState({
            status: !this.state.status
        });
     AsyncStorage.setItem("myCheckbox",JSON.stringify(this.state.status));
}

render(){
return(

.... 
    <CheckBox checked={this.state.status}
              onPress={() => this.toggleStatus()} />

);}

我甚至试图改变这样的状态:

componentWillMount(){
        AsyncStorage.getItem('myCheckbox').then((value) => {
            JSON.parse(value)
            this.setState({
                status: value
            });
            if (this.state.status == 'false') {
                this.setState({
                    status: false
                });
            }
            else if (this.state.status == 'true') {
                this.setState({
                    status: true
                });
            }
            else {
                this.setState({
                    status: false
                });
            }   
        });

    }

但是,它不断发出警告:enter image description here

1 个答案:

答案 0 :(得分:0)

我复制了你的代码(在https://snack.expo.io/SJSzZzvbW中)并且没有找到任何理由为什么类型不是布尔。你是否在代码中的任何其他地方操纵状态?