redux-saga에 대한 단순하고 매우 일반적인 사용 사례처럼 보이는 문제가 있습니다. 내 첫 번째 데이터 세트로 내 redux 저장소를 채우기 위해 API를 호출하려고합니다. 그렇게하기 위해 저는 시작할 때 사가를 실행하려고합니다.Sagas가 다른 Sagas 및 동작을 실행하지 않음
는내 store.js
의 관련 부분은 다음과 같습니다 나는 API에 요청을 볼 수있는 페이지가로드
export function* fetchListings() {
try {
console.log('fetchListings saga - try')
const response = yield call(api.get, '/api/listings')
console.log(response.data.listings)
yield put({type: 'FETCH_LISTINGS_SUCCESS', listings: response.data.listings})
}
catch (err) {
console.log('fetchListings saga - error')
yield put({type: 'FETCH_LISTINGS_ERROR', error: err})
}
}
export function* listenFetchListings() {
yield takeEvery('FETCH_LISTINGS_REQUEST', fetchListings)
console.log('watcher saga')
}
export default function* rootSaga() {
yield fork (fetchListings)
}
이 해고와 :
const reduxRouterMiddleware = routerMiddleware(browserHistory)
const sagaMiddleware = createSagaMiddleware()
const middleware = [reduxRouterMiddleware, sagaMiddleware]
const enhancers = compose(
window.devToolsExtension ? window.devToolsExtension() : f => f,
applyMiddleware(...middleware)
)
const store = createStore(rootReducer, defaultState, enhancers)
sagaMiddleware.run(rootSaga)
export const history = syncHistoryWithStore(browserHistory, store)
export default store
내 sagas.js
파일처럼 보이는 콘솔 로그에 예상되는 페이로드가 표시됩니다. 죄송하지만 FETCH_LISTINGS_SUCCESS
작업은 발송되지 않습니다. ReduxDevTools에서 수동으로 디스패치하면 내 상태가 아름답게 수정됩니다. 테스트 목적으로 명시 적 호출을 사용하여 시도하고 테스트하기 위해 listenFetchListings
saga를 추가했습니다. 불행히도, FETCH_LISTINGS_REQUEST
동작을 수동으로 보내면 트리거되지 않는 것 같습니다. 몇 시간의 테스트 후 독서 문서와 튜토리얼을 읽은 후에 패배를 인정해야합니다. 도와주세요.