2017-05-26 27 views
0

我只是實現從天然鹼基的複選框部件在我的反應的本機應用。每次我選中/取消選中複選框,一些變量會改變其狀態(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 
       }); 
      } 
     }); 

    } 

但是,它不斷髮出警告:enter image description here

+0

商店複選框在DB或陣列的狀態,並使其 –

回答

0

我複製了你的代碼(在:https://snack.expo.io/SJSzZzvbW),並沒有找到任何理由爲什麼類型不是布爾值。你是否在代碼中的其他地方操縱狀態?

+0

謝謝@zvona是的,我就是那個同樣的「身份」,以控制是否顯示圖像或不能在整個應用程序..所以是的,我很使用該狀態非常多,但我只改變它的價值在一個頁面中......你正在使用按鈕,但對我來說,我必須使用複選框,並保持它檢查或不,即使我改變了頁面。我得到的結果是,它每次檢查/取消選中時都會更改狀態,但如果我更改了頁面,它將始終返回到默認值 – user3521011