Я пытаюсь создать реактивное приложение, в котором, если флажок установлен, оно должно сохранять состояние в асинхронном хранилище. Я не могу заставить это работать, так что, надеюсь, кто-то поможет мне. Я новичок в React Native, поэтому в asyncstorage я понятия не имею
Код ниже показывает, как далеко я зашёл, пытаясь понять, как это сделать.
CODE
import React, { Component } from 'react';
import { CheckBox } from 'react-native-elements'
import { View, Button } from 'react-native';
import AsyncStorage from '@react-native-community/async-storage';
import Fontisto from 'react-native-vector-icons/Fontisto';
export default class Check extends Component {
constructor(props) {
super(props);
this.state = {
checked: false,
};
this.getData();
}
storeData = () => {
this.setState(prevState => ({ checked: !prevState.checked }))
if(this.state.checked == true){
AsyncStorage.setItem("@storage_Key", JSON.stringify(this.state.checked));
}
}
getData = () => {
AsyncStorage.getItem("@storage_Key").then((value) => {
if(value != null){
this.setState({
checked:true
})
}
})
}
render() {
return (
<View>
<CheckBox
checkedIcon={<Fontisto name='checkbox-active' size={15} color='#000' />}
uncheckedIcon={<Fontisto name='checkbox-passive' size={15} color='#000' />}
checked={this.state.checked}
onPress={() => this.storeData()}
/>
</View>
);
}
}
код pressHandler
const pressHandler = key => {
console.log('Todos BEFORE delete');
console.log(todos);
const newTodos = todos.filter(todo => todo.key !== key);
console.log('Todos AFTER delete');
console.log(todos);
};
код submitHandler
const submitHandler = text => {
if (text.length === 0) return;
const key = Math.random().toString();
console.log('Todos BEFORE submit');
console.log(todos);
const newTodos = [{ text, key }, ...todos];
console.log('Todos AFTER submit');
console.log(todos);
};
addList это делает так, что когда пользователь нажимает на задачу добавления, он добавляет задачу
export default function AddList({ submitHandler }) {
const [text, setText] = useState('');
const changeHandler = (val) => {
setText(val);
}
const onSubmit = useCallback(() => {
if (submitHandler) submitHandler(text)
setText("")
}, [text])
return (
<View style={styles.container}>
<View style={styles.wrapper}>
<TextInput
style={styles.input}
placeholder='What Tododay?'
onChangeText={changeHandler}
value={text}
/>
<View>
<Feather type='Feather' style={styles.icon} onPress={onSubmit} name='plus-circle' size={40} color='#000' />
</View>
</View>
</View>
);
}