【问题标题】:Save / keep the state of the CheckBox in react native application (checked or unchecked ) / Invalid prop supplied to checkbox在反应本机应用程序中保存/保持 CheckBox 的状态(选中或未选中)/提供给复选框的无效道具
【发布时间】:2017-10-27 11:44:20
【问题描述】:

我刚刚在我的 react native 应用程序中从本地基础实现了复选框组件。每次我选中/取消选中复选框时,一些变量都会更改其状态(真或假)然后存储。基于存储在 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
                });
            }   
        });

    }

但是,它不断发出警告:

【问题讨论】:

  • 将复选框的状态存储在DB或数组中,并渲染

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


【解决方案1】:

我复制了您的代码(在:https://snack.expo.io/SJSzZzvbW),但没有找到任何原因说明类型不是 boolean。您是否在代码中的其他任何地方操作状态?

【讨论】:

  • 谢谢@zvona 是的,我使用相同的“状态”来控制整个应用程序中是否显示图像.. 所以是的,我非常使用这种状态,但我只是改变它在一页中的值...您正在使用按钮,但对我来说,即使我更改页面,我也必须使用复选框并保持选中或不选中。我得到的结果是每次我选中/取消选中它时它都会更改状态,但是如果我更改页面它总是会回到默认值
猜你喜欢
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多