我正在使用下面的代码创建一个简单的待办事项列表.除了异步存储组件之外,其他一切都正常工作,因为任务要么没有保存,要么没有提取.有谁能指出我可以对useEffect
做些什么修改来解决这个问题吗?
/* eslint-disable prettier/prettier */
import React, {useState, useEffect} from 'react';
import {View, StyleSheet, FlatList, Alert} from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage';
import uuid from 'react-native-uuid';
import Header from './components/header.js';
import Task from './components/task.js';
import Add from './components/add.js';
const App = () => {
const [tasks, setTasks] = useState([]);
const addTask = (text) => {
if (!text) {
Alert.alert(null,'No task entered\nPlease enter a task',);
} else {
setTasks(prevState => {
return [...prevState, {id: uuid.v4(), title: text}];
});
}
};
const removeTask = (id) => {
setTasks(prevState =>{
return prevState.filter(task => task.id!=id);
});
};
useEffect(() => {
const saveTasks = async () => {
await AsyncStorage.setItem('TASKS', JSON.stringify(tasks));
}
saveTasks();
}, [tasks]);
useEffect(() => {
const fetchTasks = async () =>{
const saved = await AsyncStorage.getItem('TASKS');
setTasks(JSON.parse(saved));
}
fetchTasks();
}, []);
return (
<View style={styles.container}>
<Header/>
<Add addTask={addTask} />
<FlatList
data={tasks}
renderItem={({ item }) => <Task text={item.title} removeTask={removeTask} id={item.id}/>}
keyExtractor={task => task.id}
/>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
},
});
export default App;