更新状态超过 1 次后调用函数
Calling a function after updating the state more than 1 time
我正在状态中存储一些数据。我首先调用 1 API 并获取更新状态中的数据 3 次。数据更新后,我必须使用更新后的状态数据调用另一个 API。我做不到。如果状态只更新一次,我会使用 useEffect。但是,这里改变了3次。
const [data, setData] = useState(() => getDataInit());
const setDataKey = key => value =>
setData(d => ({
...d,
[key]: value,
}));
const postFn = () => {
const response = await updateData({ body: data });
onSave({
response,
widget,
wrapperId,
});
};
const resetFn = () => {
const defaultData = await getDefaultData({
query: { id: data.default_id },
});
setDataKey('quantity')(defaultData.quantity);
setDataKey('name')(defaultData.name);
setDataKey('amount')(defaultData.amount);
postFn();
};
您可以更新为只调用一个 setData
。所以可以加上useEffect
调用postFn
const resetFn = () => {
const defaultData = await getDefaultData({
query: { id: data.default_id },
});
const newData = {
quantity: defaultData.quantity,
name: defaultData.name,
amount: defaultData.amount,
};
setData((d) => ({
...d,
...newData,
}));
}
useEffect(() => {
postFn();
}, [data]);
我正在状态中存储一些数据。我首先调用 1 API 并获取更新状态中的数据 3 次。数据更新后,我必须使用更新后的状态数据调用另一个 API。我做不到。如果状态只更新一次,我会使用 useEffect。但是,这里改变了3次。
const [data, setData] = useState(() => getDataInit());
const setDataKey = key => value =>
setData(d => ({
...d,
[key]: value,
}));
const postFn = () => {
const response = await updateData({ body: data });
onSave({
response,
widget,
wrapperId,
});
};
const resetFn = () => {
const defaultData = await getDefaultData({
query: { id: data.default_id },
});
setDataKey('quantity')(defaultData.quantity);
setDataKey('name')(defaultData.name);
setDataKey('amount')(defaultData.amount);
postFn();
};
您可以更新为只调用一个 setData
。所以可以加上useEffect
调用postFn
const resetFn = () => {
const defaultData = await getDefaultData({
query: { id: data.default_id },
});
const newData = {
quantity: defaultData.quantity,
name: defaultData.name,
amount: defaultData.amount,
};
setData((d) => ({
...d,
...newData,
}));
}
useEffect(() => {
postFn();
}, [data]);