首页 > 解决方案 > 如何将参数从 redux-saga 观察者发送到 AsyncFunction?

问题描述

根据我对 UI 中每个动作的理解,有一个saga-watcher将抓取 actionType 并调用 aasyncFunction从远程服务器获取/发布数据

export function* watcherSaga() {
  yield takeEvery('SOME_WATCHER_ACTION', fetchAsync)
}

并将fetchAsync执行实际api调用

export function* fetchAsync() {
  // actual fetch from remote server api call 
  // callapi('/someUrl', someData)
  yield put({ type: 'INCREMENT' })
}

我想做这样的fetchAsync通用东西

export function* genericFetchAsync(someUrl, someData, someAction) {
  // actual fetch from remote server api call 
   // let resp = callapi('/someUrl', someData)
  yield put({ type: someAction: payload:  resp })
}

让每个观察者都可以这样称呼

export function* watcherSaga() {
  yield takeEvery('SOME_WATCHER_ACTION', 
  fetchAsync('SOME_ACTION', somedata, someUrl))
}

标签: javascriptreactjsredux-saga

解决方案


您可以在动作创建者的有效负载中放置一些参数。

并像这样在您的 fetchAsync 中调用它们:

export function * fetchAsync({ payload }) {} 

有效负载是自动传递的,因此无需在您的watcherSaga


推荐阅读