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

时间:2020-10-20 07:02:25

标签: react-native react-hooks react-native-flatlist use-effect 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]);
}

希望你能帮助我

1 个答案:

答案 0 :(得分:0)

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

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