我一直面临着本机基础复选框和AsynStorage的一些问题 . 事实上,AsynStorage默认只接受字符串,但也可以存储布尔变量,我试图使用该方法,但每次都会得到一个字符串存储 . 虽然复选框只接受布尔变量并在我尝试使用字符串时抛出警告,但它不显示复选框的先前状态(已选中或未选中) . 所以,我决定使用TouchbleOpacity制作我自己的复选框..所以你们有任何想法如何制作它?这是我想要实现的结果:
因此,目的是创建一个复选框设置页面,控制另一个页面中文本的样式,并获取上一次离开的复选框,例如:如果我检查它,我会更改页面并再次返回设置页面,我需要检查它(指示以前的状态)代码在设置页面中:
toggleStatus() {
this.setState({
status: !this.state.status
});
AsyncStorage.setItem("myCheckbox",JSON.stringify(this.state.status));
}
// to get the previous status stored in the AsyncStorage
componentWillMount(){
AsyncStorage.getItem('myCheckbox').then((value) => {
this.setState({
status: value
});
if (this.state.status == "false") {
this.setState({
check: false
});
}
else if (this.state.status == "true") {
this.setState({
check: true
});
}
if (this.state.status == null) {
this.setState({
check: false
});
}
});
}
render {
return(
...
onPress={() => { this.toggleStatus() }
checked={ this.state.check }/>
)}
在其他页面中:
componentDidMount(){
AsyncStorage.getItem('myCheckbox').then((value) => {
JSON.parse(value)
this.setState({
status: value
});
});
}
这个代码在 TWO 点击之后改变状态,我不知道为什么我在控制台中得到这个奇怪的输出,每次我点击复选框