Redux Saga Effect (take)

hhxdragon·2021년 2월 27일
0
post-thumbnail

take란

특정한 액션을 기다리기 위해서 미들웨어에 알려주는 명령 오브젝트를 생성합니다.

take활용

비동기 통신을 하다보면 원하는 타이밍에 데이터를 보여주고 싶을때가 있다.
ex)클릭 하면 리스트가 나오는 등등등
이럴때 클릭했을때 통신을 날리면 내가 원하던 타이밍에 데이터가 나오지 않을 수 있다.
하지만 미리 통신을 하고 task를 활용해서 클릭했을 때 액션을날려 화면에 데이터가 나오게 할수있다.

takeLatest(Action.Types.GET_PHOTOS, function* ({data}) {

            const result = yield call(Api.getPhoto, data) // 우선 통신을 하고

            yield take(Action.Types.NEXT); // NEXT라는 액션이 잡힐때까지 기다린다

            yield put(Action.Creators.updateState({ // 결과값을 스토에 업데이트 해준다
                photo: result,
            }))
        }),

0개의 댓글