<aside> ❗ 특정한 액션 타입이 전달될 때, 사이드 이펙트 없이 비동기 작업을 실행하기 위한 미들웨어
</aside>
function* generatorFunction() {
console.log('generator 시작')
yield 1
let a = yield
console.log('a 값을 받음')
}
npm i redux-saga
import { delay, put, call, takeEvery, takeLatest, all } from 'redux-saga/effects'
function* rootSaga() {
yield **all**([fork(takeSaga), ...]) // 모든 제네레이터 함수 동시 실행
}
const sagaMiddleware = createSagaMiddleware() // 사가 미들웨어 생성
const store = createStore(rootReducer, applyMiddleware(sagaMiddleware)) // 사가 미들웨어 등록
sagaMiddleware.run(rootSaga) // 루트 사가 실행
// 액션을 지켜보는 사가 함수에 의해 실행되는 사가 함수
function***** saga(action) {
yield **delay**(1000)
yield **put**({ type: 'INCREASE' })
const data = yield **call**(No 제네레이터 함수, action.data)
yield **fork**(제네레이터 함수)
}
// 액션을 지켜보는 사가 함수
function***** takeSaga() {
yield **take**(A, saga)
yield **takeEvery**(A, saga)
yield **takeLatest**(A, saga)
}