728x90
프로젝트를 진행하다가, redux를 활용해서 기능을 해줘야하는데, 비동기 처리를 해줘야 하는 경우가 생겼다.
따라서 원래 구현했던 redux 코드들에 redux-thunk 미들웨어를 추가해서 비동기 작업을 추가하려 해주었다.
export const setBlockRightSizeAsync = (
payload: setBlockRightSizeType,
): ThunkAction<void, RootState, null, BlockAction> => {
//리턴타입, Root상태, ExtraArgument타입, action의 타입 순서대로 넣음
const { leftPos, dayPosMap, id, width, projectId } = payload;
return async (dispatch, getState) => {
/* 생략 ... */
dispatch<BlockAction>(setBlock(newBlockInfo)); //dispatch 해주는 부분
};
};
위처럼 thunk함수를 만든 이후,
dispatch(
setBlockRightSizeAsync({ id, leftPos, dayPosMap, width, projectId }),
);
다음과 같이 dispatch를 통해서 thunk 함수를 실행시켜주려 했는데
아래와 같은 에러가 발생했다.
ThunkAction is not assignable to parameter of type 'AnyAction'.
dispatch를 호출해서 나온 반환값이 기본적으로 <AnyAction> 으로 설정되어 있는데, Thunk함수를 살펴보면 ThunkAction<void, RootState, null, BlockAction>
위에서 반환값으로 설정한 타입처럼 되어있기 때문이다.
해당 문제를 고치기 위해서는 useDispatch를 가져올때, AnyAction이 아닌, ThunkAction이 되도록 타입을 설정해줘서 해결해주었다.
const dispatch = useDispatch<ThunkDispatch<any, any, any>>();
728x90
'오류들' 카테고리의 다른 글
[REACT] Emotion 컴포넌트 선택자 사용시 에러 (0) | 2023.11.16 |
---|---|
[WEB] 티스토리 "hELLO" 스킨에 mac스타일 코드블럭 적용안되는 오류 (4) | 2023.11.08 |
[웹서버] 라즈베리파이와 prisma (0) | 2023.04.02 |
[CSS] border-right 안나올때 (0) | 2023.03.19 |
[git] 'file' does not have a commit checked out 에러 (0) | 2023.01.24 |