【发布时间】:2020-11-28 17:35:19
【问题描述】:
假设我有这 2 个动作(例如)用于“创建类别”和“加载所有类别”。每次成功创建新类别时,我都需要加载所有类别,因此,我需要在“createCategory”中调用“loadAllCategories”操作。我通常在使用带有 Redux 的 TypeScript 时这样做:
// Loading all categories
export const loadAllCategories = () => async (dispatch: Dispatch) => {
try {
// omitted for brevity
dispatch<ILoadAntdTreeSelectCompatibleCategoriesAction>( {
type: TaxonomyActionTypes.LOAD_ANTD_TREESELECT_COMPATIBLE_CATEGORIES,
payload: {
catTreeSelectLoading: false,
catTreeSelectRegistry
}
})
} catch (error) {
// omitted for brevity
}
}
// Creating a category
export const createCategory = (taxonomy: ITaxonomy) => async (dispatch: Dispatch) => {
try {
await agent.Taxonomies.create(taxonomy);
dispatch<any>(loadAllCategories()); <--- Dispatching above action within this one
dispatch<ICreateCategoryAction>({
type: TaxonomyActionTypes.CREATE_CATEGORY,
payload: {
loadingInitial: false
},
})
} catch (error) {
// omitted for brevity
}
}
我想知道,使用带有“any”类型的调度是在当前动作中调用另一个动作的唯一方法,还是有更好的方法?
我可以使用更具体的类型而不是“任何”吗?
不用dispatch(action)不用说,只要调用action的名字就不会改变状态,所以我们必须使用dispatch。
这样做的最佳做法是什么?
【问题讨论】:
标签: reactjs typescript redux dispatch thunk