Мне нужно передать полезную нагрузку от fromSaga
до toSaga
. Проблема в том, что toSaga
не получает полезную нагрузку. Однако если я отправлю действие через useEffect, toSaga
получит полезную нагрузку. По моим наблюдениям, если вы отправляете действие из fromSaga
, оно пропускает создателя действия и сразу переходит к toSaga
. В результате полезная нагрузка не отправляется на toSaga
. Вот реальный код:
const fetchTokens = function*(action: any) {
try {
const userCreds: any = toSnakeCase(action.payload) // action.payload is undefined here
const response: any = yield call(fetchTokensApi, userCreds)
if (response.status === 200) {
const data: any = response.data.data
const tokens: Tokens = {
accessToken: data.access_token,
refreshToken: data.refresh_token,
expiry: extractExpiry(data.access_token),
}
yield put({ type: types.FETCH_TOKENS_SUCCESS, tokens})
}
} catch (error) {
yield put({ type: types.FETCH_TOKENS_FAILURE, error })
}
}
export const fetchTokensSaga = function*() {
yield takeLatest(types.FETCH_TOKENS, fetchTokens)
}
const validateAccessToken = function*() {
try {
const tokens: Tokens = yield select(tokensSelector)
if (!tokens) {
yield put({ type: types.FETCH_TOKENS, USER_CREDS })
}
} catch (error) {
yield put({ type: types.FETCH_TOKENS_FAILURE, error })
}
}
В validateAccessToken
, fetchTokensSaga
вызывается через:
yield put({ type: types.FETCH_TOKENS, USER_CREDS })
fetchTokens
должен затем получить USER_CREDS
. Однако это не так, поскольку payload
всегда undefined
. Что мне делать, чтобы fetchTokens
получил полезную нагрузку USER_CREDS
?