Checkbox 根据react native中的复选框状态显示/隐藏组件
在设置页面中,我选中了一个复选框作为默认值。如果用户取消选中,那么应用程序中的所有图像都将被隐藏,用户将无法看到整个应用程序中的任何图像。 我想我需要控制复选框的状态(选中或未选中),在单击/按下复选框时更改该值,将该新值传递给所有应用程序(如何?),然后根据该值我可以决定是否显示图像 所以基本上,我的问题是访问该状态值,然后决定显示什么。 以下是我在设置页面中使用的代码: 设置页面:Checkbox 根据react native中的复选框状态显示/隐藏组件,checkbox,react-native,onclick,show-hide,native-base,Checkbox,React Native,Onclick,Show Hide,Native Base,在设置页面中,我选中了一个复选框作为默认值。如果用户取消选中,那么应用程序中的所有图像都将被隐藏,用户将无法看到整个应用程序中的任何图像。 我想我需要控制复选框的状态(选中或未选中),在单击/按下复选框时更改该值,将该新值传递给所有应用程序(如何?),然后根据该值我可以决定是否显示图像 所以基本上,我的问题是访问该状态值,然后决定显示什么。 以下是我在设置页面中使用的代码: 设置页面: constructor(props) { super(props);
constructor(props) {
super(props);
this.state ={
status:false
}
};
toggleStatus(){
this.setState({
status:!this.state.status
});
//I even hardcoded it to false but i keep getting null
AsyncStorage.setItem('myCheckbox',JSON.stringify(false));
//AsyncStorage.setItem('myCheckbox',JSON.stringify(this.state.status));
}
...
render() {
return(
<TouchableOpacity onPress={()=>this.toggleStatus()}>
<Text>
press me to change state
</Text>
</TouchableOpacity>
toggleStatus() {
this.setState({
status: !this.state.status
});
AsyncStorage.setItem("myCheckbox", "save me");
console.log("in the toggle status function", this.state.status)
}
我不断地进入控制台:
这段代码工作正常,每次我按下它时,它都会将status的值从false更改为true
更新尝试存储简单字符串而不等待
在“设置”页面中:
constructor(props) {
super(props);
this.state ={
status:false
}
};
toggleStatus(){
this.setState({
status:!this.state.status
});
//I even hardcoded it to false but i keep getting null
AsyncStorage.setItem('myCheckbox',JSON.stringify(false));
//AsyncStorage.setItem('myCheckbox',JSON.stringify(this.state.status));
}
...
render() {
return(
<TouchableOpacity onPress={()=>this.toggleStatus()}>
<Text>
press me to change state
</Text>
</TouchableOpacity>
toggleStatus() {
this.setState({
status: !this.state.status
});
AsyncStorage.setItem("myCheckbox", "save me");
console.log("in the toggle status function", this.state.status)
}
在我使用的页面中:
componentDidMount(){
let value = AsyncStorage.getItem("myCheckbox")
console.log('in the other page i get ', value)
}
我进入控制台:
怎么了
PS:我使用的是native base,我想知道我是否可以在复选框本身中执行onPress而不是touchableOpacity您可以使用
异步存储作为全局存储机制
在这种情况下,您可以访问应用程序任何其他部分中的变量
try {
const value = await AsyncStorage.getItem('myCheckbox');
if (value !== null){
console.log(value);
}
} catch (error) {
// Error retrieving data
}
并将其保存在toggleStatus
您可以使用:
try {
await AsyncStorage.setItem('myCheckbox', 'myValue');
} catch (error) {
// Error saving data
}
因此,每次你打开和关闭应用程序时,它的状态将与以前一样可用。您可以从react native
导入if
import { AsyncStorage } from 'react-native';
您可能应该使用redux
谢谢。。不幸的是,我在异步存储中存储布尔值时遇到问题。。请查看问题中的更新。您可以保存一个字符串,并与之进行比较。谢谢。。我更新了我的问题,甚至在不等待的情况下存储一个简单字符串也无法正常工作。。请提供帮助请参见我上面的示例,了解如何使用wait
,因为您直接使用了在使用之前需要等待的值AsyncStorage
返回一个Promise
而不是一个值,因此您必须使用Wait
或then
。我同意Ivan-这是一个全局状态选项的问题。如果需要保留状态,则应独立于UI交互(即,在应用程序加载时,将设置重新加载到状态)。