Предположим, что у меня есть эти 2 действия (в качестве примера) для создания категории и загрузки всех категорий. Мне нужно загружать все категории каждый раз, когда я успешно создаю новую категорию, поэтому мне нужно вызвать действие loadAllCategories в createCategory. Обычно я делаю это так, используя TypeScript с Redux:
// 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
}
}
Я хотел знать, использование отправки с любым типом — это единственный способ вызвать другое действие внутри текущего или есть лучший способ сделать это?
Можно ли использовать более конкретный тип вместо любого?
Излишне говорить, что без использования dispatch(action) простой вызов имени действия не изменяет состояние, поэтому мы должны использовать диспетчеризацию.
Как лучше всего это сделать?