redux-saga / takeEvery, put, call

seulg1004·2021년 4월 11일
0

SW공모전준비

목록 보기
4/8

saga는 비동기 로직을 구현할 때 사용되는데 계속 상기시켜도 많이 까먹는 라이브러리인듯하다... 다 그게 그거같이 느껴지는 함수들이 가득 있다. 다 비동기 로직인건 아는데,,ㅎ,,,, 아무튼 열심히 공부해야겠다ㅠ
generate함수를 기반으로 하는 함수이다. generate함수는 코드 진행중에 yield을 만나면 멈추고 계속 하라는 지시가 있으면 멈춘 부분부터 다시 진행하는 함수이다.

takeEvery()

const takeEvery(req, function)

request가 들어오면 function을 실행하는 함수이다. 요청이 들어오는지 계속 지켜보는 함수라서 로그인같은 로직을 구현하기에 좋다고 한다.
<예시코드>

function* watchLoginUser() {
    yield takeEvery(LOGIN_REQUEST, loginUser);
}

put

const put({
  type:"",
  payload: "",
});

put는 type과 payload를 redux스토어에 dispatch하는 기능을 한다.

function* loginUser(loginaction) {
    try {
        const result = yield call(loginUserAPI, loginaction.payload);

        yield put({
            type: LOGIN_SUCCESS,
            payload: result.data,
        });
    } catch (e){
        yield put({
            type: LOGIN_FAILURE,
            payload: e.response,
        });
    }
}

이렇게 만들어주면 리듀서가 type과 payload을 받아서 실행시켜준다.


call

function call(function, params)

put은 dispatch하는 기능을 갖고 있지만, call은 주어진 함수를 실행하는 기능을 갖고 있다고 한다. 물론 비동기 로직으로!

0개의 댓글

관련 채용 정보