Script

Thunk 2 본문

항해99/5주차 주특기 심화

Thunk 2

scripter. 2022. 8. 11. 03:14
thunk에서 Promise 다루기

 

extraReducers

 

extraReducers란 reducer에서 바로 구현되지 않는 기타 Reducer 로직을 구현할 때 사용하는 기능이다.

보통 thunk 함수를 사용할 때 extraReducers를 사용한다.

 

이때 통신 진행중,실패,성공에 대한 케이스를 모두 상태로 관리하는 로직을 구현한다.

서버와의 통신은 100% 성공하는 것이므로 각 경우에 맞게 서비스가 어떻게 동작할지 정해주어야 한다.

 

pending, fullfilled, rejected로 나눌 수 있다.

우리가 thunk 함수에서 thunkApI.fulfillWithValue(data.data)라고 작성하면 fulfilled로 디스패치 된다.

action을 콘솔에 찍어보면 fullWithValue(data.data)가 보낸 액션 객체를 볼 수 있다.

(type과 payload가 있음.)

 

fullfillWithValue

 

fullfillWithValue 는 툴킷에서 제공하는 API이다.

Promise에서 resolve 된 경우, 즉 네트워크 요청이 성공한 경우에 dispatch 해주는 기능을 가진 API이다.

그리고 인자로는 payload등을 넣어줄 수 있다.

 

rejectWithValue

 

rejectWithValue도 툴킷에서 제공하는 API 이다.

Promise가 reject된 경우, 네트워크 요청이 실패한 경우 dispatch 해주는 기능을 가진 API이다.

마찬가지로 인자안에 값을 넣어줄 수 있다. ( ex- catch에서 잡아주는 error 객체)

 

 정리

 

  • thunk 함수는 Reducers 아닌 외부에서 작성한 것 이므로, extraReducers 를 사용해야 한다.
  • thunkAPI를 이용해서 Promise를 다룰 수 있다.
  • 서버에서 가져오는 데이터는 로딩상태, 성공, 실패로 나누어서 상태를 관리하고, 컴포넌트 단에서도 이에 따라 다르게 조건부 렌더링을 한다.

'항해99 > 5주차 주특기 심화' 카테고리의 다른 글

Custom Hook  (0) 2022.08.11
Thunk  (0) 2022.08.10
Axios  (0) 2022.08.08
json-server  (0) 2022.08.08
Redux Toolkit  (0) 2022.08.07
Comments