Я столкнулся с некоторыми проблемами с флажком собственной базы и 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
});
});
}
Этот код меняет статус после ДВА щелчка, и я не знаю почему, и я получаю этот странный вывод в консоли каждый раз, когда я устанавливаю флажок
JSON.stringify(myVal)
и извлекал с помощьюJSON.parse(fromStorage)
— таким образом вы можете хранить сложные объекты и поддерживать типы. - person Andrew Breen   schedule 01.06.2017