Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何设置复选框以在react native中使用anyc存储_Javascript_React Native_Local Storage_Asyncstorage - Fatal编程技术网

Javascript 如何设置复选框以在react native中使用anyc存储

Javascript 如何设置复选框以在react native中使用anyc存储,javascript,react-native,local-storage,asyncstorage,Javascript,React Native,Local Storage,Asyncstorage,我正在设置一个复选框,将数据推送到react native中的异步存储,但在让数据保持不变方面遇到了困难。我已经设置了一个函数,假设在复选框被选中时将数据推送到存储器,然后在复选框被取消选中时将数据推送到存储器。下面是代码,似乎不勾选框就粘不住了。当我再次打开应用程序时,框仍处于选中状态,我在这里可能做错了什么?假设现在存储的本地项是true,我想在取消选中时将其设为false。为了确认没有任何变化,我添加了一个按钮来调用数据 const STORAGE_KEY = '@save_ena

我正在设置一个复选框,将数据推送到react native中的异步存储,但在让数据保持不变方面遇到了困难。我已经设置了一个函数,假设在复选框被选中时将数据推送到存储器,然后在复选框被取消选中时将数据推送到存储器。下面是代码,似乎不勾选框就粘不住了。当我再次打开应用程序时,框仍处于选中状态,我在这里可能做错了什么?假设现在存储的本地项是
true
,我想在取消选中时将其设为false。为了确认没有任何变化,我添加了一个按钮来调用数据

    const STORAGE_KEY = '@save_enableauto'
        state={
            enableAuto:false
        }

      _storeData = async enableAuto => {
            let x = enableAuto;
            console.log('setting auto messages to: ', !x);
            //send check box to state
            this.setState({ enableAuto: !x });

            try {

              if(x) {
                await AsyncStorage.setItem(STORAGE_KEY, 'true')
                alert('Data successfully saved!')
              } else {
                await AsyncStorage.setItem(STORAGE_KEY, 'false')
              }

            } catch (e) {
                console.log(e)
              alert('Failed to save name.')
            }
          }

        _retrieveData = async () => {
            try {
              const enableAuto = await AsyncStorage.getItem(STORAGE_KEY);
              if (enableAuto !== null) {
                // We have data!!
                console.log('receiving from local storage: ',enableAuto);
                this.setState({ enableAuto:eval(enableAuto) });
              }
            } catch (error) {
                alert('failed to load previous settings.')
              // Error retrieving data
            }
        };

        componentDidMount() {
            this._retrieveData()
          }


    ....

<Button title={'call Data'} onPress={() => this._retrieveData()}/>
    <CheckBox
                                    value={this.state.enableAuto}
                                    onValueChange={() => this._storeData(this.state.enableAuto)}
                                />
const STORAGE\u KEY='@save\u enableauto'
陈述={
enableAuto:false
}
_storeData=async enableAuto=>{
设x=enableAuto;
log('将自动消息设置为:',!x);
//将复选框发送到状态
this.setState({enableAuto:!x});
试一试{
if(x){
等待AsyncStorage.setItem(存储密钥'true')
警报('数据已成功保存!')
}否则{
等待AsyncStorage.setItem(存储密钥'false')
}
}捕获(e){
控制台日志(e)
警报('未能保存名称')
}
}
_retrieveData=async()=>{
试一试{
const enableAuto=await AsyncStorage.getItem(存储密钥);
如果(enableAuto!==null){
//我们有数据!!
log('从本地存储器接收:',enableAuto);
this.setState({enableAuto:eval(enableAuto)});
}
}捕获(错误){
警报('加载以前的设置失败')
//检索数据时出错
}
};
componentDidMount(){
这个。_retrieveData()
}
....
这是。\u retrieveData()}/>
this.\u storeData(this.state.enableAuto)}
/>

更新存储数据呼叫:

<CheckBox value={this.state.enableAuto}
               onValueChange={() => this._storeData(!this.state.enableAuto)}
     />

共享世博链接,我查一下
_storeData = async enableAuto => {
        let x = enableAuto;
        console.log('setting auto messages to: ', x);
        //send check box to state
        this.setState({ enableAuto: x });
        ...
    }