如何将参数从redux-saga观察器发送到AsyncFunction?

时间:2019-03-08 08:30:04

标签: javascript reactjs redux-saga

据我了解,对于UI中的每个操作,都有一个saga-watcher可以抓住 actionType并调用asyncFunction从远程服务器获取/发布数据

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))
}

1 个答案:

答案 0 :(得分:0)

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

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

export function * fetchAsync({ payload }) {} 

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

中做其他任何事情