我为POST和GET操作创建了切片-
export const getAllAnnotationType = createAsyncThunk<IGetAllAnnotationType>(
"annotationType/getAll",
async (annotationType, { rejectWithValue }) => {
try {
const response = await Services.get("/globalAnnotationTypes");
return response.data.slice().reverse() as IGetAllAnnotationType;
} catch (err) {
const error = err as any;
return rejectWithValue(error?.response?.data);
}
}
);
export const createAnnotationType = createAsyncThunk<
ICreateAnnotationType,
{ name: string; des: string }
>("annotationType/create", async (annotationType, { rejectWithValue }) => {
try {
const { name, des } = annotationType;
const response = await Services.post("/globalAnnotationTypes", {
name,
des,
});
return response.data as ICreateAnnotationType;
} catch (err) {
const error = err as any;
return rejectWithValue(error?.response?.data);
}
});
我为这两个操作创建了一个公共切片。
我把它们用在我的React组件里,就像这样-
useEffect(() => {
switch (typeLoader) {
case 'pending':
setLoader(true);
break;
case 'succeeded':
if (getAllData) {
dispatch(resetAnnotationType());
setLoader(false);
setRows(getAllData);
}
if (createData) {
showToast();
dispatch(getAllAnnotationType());
setNoticeMsg(createData);
}
break;
case 'failed':
showToast();
}
}, [typeLoader]);
我正在寻找更优化的方式来使用他们在React组件。在未来,我将有删除和放置操作,我将不得不使用更多的条件内'成功'状态。任何其他方式我可以做到这一点?
1条答案
按热度按时间rbl8hiat1#
我最喜欢的处理获取数据的方法是Redux Toolkit Query。它创建切片。如果需要,您可以自定义获取函数,并为您提供钩子,以便直接在组件中使用。您还可以缓存获取的数据。一个简单的使用示例可以是(在组件中):
如果您对跨应用程序共享缓存数据还有其他问题,可以在这里发表评论,我很乐意分享我是如何解决问题的(使用名为
fixedCacheQuery
的东西)。即使你可以在网站上找到样板文件,如果你需要,让我知道,我会编辑这个回应,以分享样板文件,因为我写和使用它。