我刚刚在本机应用程序中实现了本机库中的复选框组件。每次我选中/取消选中该复选框时,某些变量会更改其状态(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
});
}
});
}
答案 0 :(得分:0)
我复制了你的代码(在https://snack.expo.io/SJSzZzvbW中)并且没有找到任何理由为什么类型不是布尔。你是否在代码中的任何其他地方操纵状态?