我一直在面對本機基本複選框和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(
...
<CheckBox
onPress={() => { this.toggleStatus() }
checked={ this.state.check }/>
)}
在其他頁碼:
componentDidMount(){
AsyncStorage.getItem('myCheckbox').then((value) => {
JSON.parse(value)
this.setState({
status: value
});
});
}
此代碼更改後二點擊的狀態,我不知道爲什麼,我在控制檯中這個奇怪的輸出,每次我點擊複選框
我認爲最好看看你從AsyncStorage存儲/檢索數據的方式,而不是重新發明複選框。我將通過'JSON.stringify(myVal)'存儲數據,並使用'JSON.parse(fromStorage)'進行檢索 - 這樣您就可以存儲複雜的對象並維護類型。 –