inflearn logo
강의

Course

Instructor

[Renewal] Creating a NodeBird SNS with React

Learn about saga effects

redux-saga 의 흐름.

626

juny

14 asked

4

질문1.   리덕스사가에 액션이 전달되는 과정

 dispatch({
      type: LOG_IN_REQUEST,
      data: { email, password },
    });

위와 같이 로그인 버튼을 눌렀을때 인자로 전달된 액션을 dispatch 하게 되는데.

function* watchLogIn() {
  yield takeLatest(LOG_IN_REQUEST, logIn);
}

이후 사가에서  LOG_IN REQUEST 에관한 액션이 왔을떄 login 함수가 실행된다는 흐름은 이해를 했습니다. 하지만 액션객체의 type 속성인 LOG_IN_REQUEST 가 어떻게 위에 takeLatest 의 첫번째 인자로 인식이되어 login 함수가 실행되는지 직관적으로 이해가 가지않습니다. 이미 사가 라이브러이에서 정해진 규칙같은 건가요 ? 액션을 디스패치 할때 {type: `액션타입`} 형태여야만 takeLatest('액션타입') 이 인식이되는지 궁금합니다.

질문2. yield

function* logIn(action) {
  try {
    console.log('saga logIn');
    // const result = yield call(logInAPI);
    yield delay(1000);        => 멈춤?
    yield put({                    => 멈춤?
      type: LOG_IN_SUCCESS,
      data: action.data,
    });
  } catch (err) {
    console.error(err);
    yield put({
      type: LOG_IN_FAILURE,
      error: err.response.data,
    });
  }
}

yield 는 중단점 역활을 한다고 이해했습니다. 그럼 위에 takeLatest 의 두번째인자로  위 login 함수가 실행될때 첫번째 yield delay(1000) 이 실행되고 멈추는게아니라 계속에서 아래 yelid put 쪽을 실행되는부분이 이해가 잘 가지않습니다.!

영상 몇번 돌려보고 찾아도 봤는데 스스로 해결하지 못해 질문 드립니다 ㅜㅠ..

 

redux nodejs react express Next.js

Answer 3

6

zerocho

{type: `액션타입`} 형태여야만 takeLatest('액션타입') 이 인식이되는지 궁금합니다.

네 이게 맞습니다. 둘이 같으면 takeLatest가 반응합니다. 이벤트리스너같은 것과 유사하다고 보시면 됩니다.

saga가 알아서 내부적으로 next를 실행합니다. 그래서 원래 제너레이터를 쓸 때는 yield에서 멈추지만 saga가 next를 계속 순서대로 호출하므로 우리의 눈에는 중단되는 것처럼 보이지 않습니다. next를 호출하면서 Promise는 resolve해서 next를 호출하므로 async/await같은 효과를 낼 수 있습니다.

1

juny

진짜 빠른답변감사합니다..!!! 

0

jumpingboys3274

제가 헷갈리던 부분들이었는데 질문/답변 덕에 이해하고 갑니다:-)

넥스트 버젼 질문

0

79

2

로그인시 401 Unauthorized 오류가 뜹니다

0

91

1

무한 스크롤 중 스크롤 튐 현상

0

177

1

특정 페이지 접근을 막고 싶을 때

0

105

2

createGlobalStyle의 위치와 영향범위

0

97

2

인라인 스타일 리렌더링 관련

0

93

2

vsc 에서 npm init 설치시 오류

0

149

2

nextjs 15버전 사용 가능할까요?

0

160

1

화면 새로고침 문의

0

123

1

RTK에서 draft, state 차이가 있나요?

0

155

2

Next 14 사용해도 될까요?

0

452

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

350

1

url 오류 질문있습니다

0

211

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

378

1

sudo certbot --nginx 에러

0

1282

2

Minified React error 콘솔에러 (hydrate)

0

471

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

249

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

329

1

npm run build 에러

0

519

1

front 서버 npm run build 중에 발생한 에러들

0

383

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

339

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

289

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

242

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

202

1