IT评测·应用市场-qidao123.com
标题:
[react]redux异步处理和重写useDispatch
[打印本页]
作者:
飞不高
时间:
2024-12-23 14:02
标题:
[react]redux异步处理和重写useDispatch
异步代码
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
import { getBanner } from '../http/request';
import store from '@/store';
export const fetchBanner = createAsyncThunk(
'recommend/banners',
async (args, thunkAPI) => {
const response = await getBanner();
thunkAPI.dispatch(getBannerAction(response.data));
},
);
const recommendStore = createSlice({
name: 'recommend',
initialState: {
banners: [],
},
reducers: {
getBannerAction(state, { payload }) {
console.log('得到', payload);
state.banners = payload.banners;
},
},
});
export const { getBannerAction } = recommendStore.actions;
export default recommendStore.reducer;
复制代码
外面调用的是
dispatch(fetchBanner());
复制代码
但是ts会报错
类型“AsyncThunkAction<any, void, AsyncThunkConfig>”的参数不能赋给类型“UnknownAction”的参数。ts
这时间来到总仓库 把 dispatch改装一下
// dispatch
export type AppDispatch = typeof store.dispatch;
export const useAppDispatch = () => useDispatch<AppDispatch>();
复制代码
或者
type AppDispatch = typeof store.dispatch;
export const useAppDispatch: () => AppDispatch = useDispatch;
复制代码
外面就可以用了,ts不会报错了
useEffect(() => {
dispatch(fetchBanner());
}, []);
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4