내 애플리케이션을 END 효과 (자세한 내용은 https://github.com/redux-saga/redux-saga/issues/255에 대한 자세한 내용과 함께 매우 까다로운 이유)를 통해 서버 측 렌더링에 가져 오려고합니다.redux-saga - 다른쪽에 1 개의 비동기가 종속 된 서버 쪽 렌더링
내 데이터는 비동기 요청 2 개 (getJwtToken -> (with token data) FetchItem -> now render
)를 사용합니다.
전혀 가능합니까?
나는 채널 (여기서는 https://redux-saga.js.org/docs/advanced/Channels.html)을 보는데 시간을 보냈으며 어떤 변형을 할 수 없었습니다.
내 사가는 다음과 같이 (LOAD_USER_PAGE 처음에 해고)
function* loadUserPage() {
yield put({type: 'JWT_REQUEST'})
const { response } = yield call(fetchJwtToken)
if (response) {
yield put({type: 'JWT_REQUEST_SUCCESS', payload: response})
}
}
function* fetchItem() {
console.log('NEVER GETS HERE')
}
function* watchLoadPage() {
yield takeLatest('LOAD_USER_PAGE', loadUserPage);
}
function* watchFetchItem() {
yield takeLatest('JWT_REQUEST_SUCCESS', fetchItem);
}
export default function* rootSaga() {
yield all([
fork(watchLoadPage)
fork(watchFetchItem)
])
}
내가 때문에 시작 만 효과를 종료 발사 END 이벤트 (작동하지 않는 이유를 이해 생각
, 이후 보이는 내 2 차 효과를 처음 할 때까지 해고되지 않습니다 그것이 runSaga().done
약속에 포함되지 않은, 다시입니다.
으로 내가 작업 JWT_REQUEST_SUCCESS
해고 의미 작동하지 않고 runSaga.done
약속은 실행됩니다. 그러나 CONSOLE.LOG 내 메시지가 해고되지 않았습니다.
같은 기능으로 두 요청을 모두 가질 수 있다고 생각하지만 토큰 승인 부분을 추상화하려고합니다.
어떤 방식으로도 가능하지 않습니까?
정말 붙어 있습니다.
이 코드가 지금 실행되면 어떻게됩니까? "작동하지 않는 것"보다 자세한 내용이 도움이 될 것입니다. – stone
@skypecakes 죄송합니다 + 업데이트를 자세히 설명합니다. 그래서'JWT_REQUEST_SUCCESS' 액션이 시작되고'runSaga.done' 약속이 실행됩니다. 그러나 'console.log'에있는 내 메시지는 실행되지 않습니다. 나는 동일한 기능으로 두 요청을 모두 가질 수 있다고 생각하지만 토큰 승인 부분을 추상화하려고합니다. 나는 그것이 의미가 있기를 희망한다. –