React.js/상태관리
react redux 기초4(applyMiddleware, thunk)
간카레
2024. 2. 7. 22:12
반응형
SMALL
applyMiddleware는 redux에서 dispatch할 때, 값이 reducer에 전달되기 전, 그 사이에 API 호출할 수 있게 해주는 미들웨어라고 한다.
로깅, 충돌보고, 비동기 API 통신, 라우팅 등을 할 때 쓰는거라는데
안쓰면 어찌되는지 확인할 능력이 아직 없다
그래서 어찌 쓰느냐
import { applyMiddleware } from 'redux';
리덕스에서 applyMiddleware 데려오면 미들웨어를 쓸 수 있다.
여기서 예제하나 돌려보자
const loggerMiddleware = (store: any) => (next: any) => (action: any) => {
console.log("store", store);
console.log("action", action);
next(action);
}
const middleware = applyMiddleware(loggerMiddleware);
const store = createStore<any, any>(rootReducer, middleware);
스토어 생성할 때 middleware 만든거 넣어주면 된다.
loggerMiddleware 코드는 구글에서 주울 수 있다.
아무튼 이렇게 하면 store랑 action에 현재 뭐 있는지 알 수 있다.
store는 왜 보는지 지금은 모르겠는데 action안에 내가 저장한거 가져온거 잘 있어서 쓸만한듯
2번쨰는 thunk이다
thunk는 리덕스에서 비동기 작업할때 쓰는 방법이란다
일단 redux-thunk 설치해서 thunk 가져온다
import { thunk } from 'redux-thunk';
middleware에 thunk도 넣어준다
const middleware = applyMiddleware(thunk, loggerMiddleware);
그럼 아무튼 store만들 때 thunk도 들어간거임
아무튼 미들웨어인거 같음 thunk라는것도
아무튼 useEffect 이용해서 비동기 처리하면 되는데
useEffect(() => {
dispatch(fetchPosts())
}, [dispatch]);
export const fetchPosts = (): any => async(dispatch: any, getState: any) => {
dispatch({ type: "FETCH_POSTS", payload: response.data });
}
그냥 thunk없이도 구현하는데 문제도 없고, 성능에도 문제 없다고한다.
근데 thunk를 안쓰면, 코드가 길어지고 이해하기 어려워지는 느낌적인 느낌느낌이다
그냥 비동기 요청 날릴때는 쓰는 것으로 해보자
나중에 공부를 더 하게되면 이유도 알게되고, 골라잡아쓰는 쌉고수가 될것이다.
반응형
LIST