使用useEffect和asyncstorage数据更新单位列表

问题描述

我有两个屏幕,第一个屏幕(Entry.js)就像一个表单,我在其中输入一些数据并将其保存在asyncstorage中

const entryVehicleLocal = async ({values}) => {

    const currentDay = new Date();
    const date = String(currentDay);
    const dateSlice = date.slice(4,-15);
    const issuedDate = String(dateSlice);
    values.issuedDate = issuedDate;
            
    const id = shortid.generate();

    const valuesLocal = {
        id: id,issuedDate: issuedDate,type: values.type,color: values.color,}

    saveCar(JSON.stringify(valuesLocal));
    
}

const saveCar = async (carjson) => {
    try {
        await AsyncStorage.setItem('car',carjson);
        console.log('Logrado');
    } catch (error) {
        console.log(error);
    }
}

然后我有第二个屏幕(Parking.js),我想在此列表中显示保存在异步存储中的数据,但这是我的问题,我试图使用useEffect自动刷新我的数据,但是当我这样做时只是刷新一次,然后再也不更新数据,所以清单仅显示一个元素,我希望在第一个屏幕中输入所有项目

const [carList,setCarList] = useState([]);

useEffect(() => {
    getStorage();
},[setCarList]);

const getStorage = async () => {
    const newCar = await AsyncStorage.getItem('car');
    const car = JSON.parse(newCar);
    console.log(car);
    setCarList([...carList,car]);
}

希望你能帮助我

解决方法

在单位列表组件中设置额外数据,以便在数据更新时重新呈现,

<FlatList ... extraData={carList}/>