Reactjs redux和redux saga UI操作触发多个API操作
只是想了解在Reactjs redux和redux saga UI操作触发多个API操作,reactjs,redux,redux-saga,Reactjs,Redux,Redux Saga,只是想了解在redux和redux-saga中,一系列API调用依赖于单个UI操作的最佳实践是什么。比如说 UI操作所选项目\u更改被触发 几个API请求操作被触发:DATA1\u请求,DATA2\u请求,…,DATA10\u请求 当请求数据时DATA10_请求get resolved,redux saga将一系列操作(如DATA1_SUCCESS)以及要解析的数据发送到存储。我是通过《redux传奇》(redux saga)获得这一部分的,我基本上了解如何做到这一点 我的问题是,如何获取DAT
redux
和redux-saga
中,一系列API调用依赖于单个UI操作的最佳实践是什么。比如说
所选项目\u更改
被触发DATA1\u请求
,DATA2\u请求
,…,DATA10\u请求
DATA10_请求
get resolved,redux saga将一系列操作(如DATA1_SUCCESS
)以及要解析的数据发送到存储。我是通过《redux传奇》(redux saga)获得这一部分的,我基本上了解如何做到这一点DATA1\u请求
<代码>数据10\u请求在触发所选项目更改
时触发?愚蠢的方法是只在发送SELECTED\u ITEM\u CHANGE
的组件中执行,然后只dispatch
所有这些操作以及SELECTED\u ITEM\u CHANGE
操作,但这不是模块化的,因为组件不应该负责所有这些API调用。那么谁来处理呢?我想有两种选择:
所选项目更改的操作创建者也分派数据1\u请求
,…,数据10\u请求
李>
制作一个传奇故事,聆听所选项目的更改并发送数据1\u请求
,…,数据10\u请求
我倾向于第二种,但我不是很确定
谢谢你的帮助 选项2是您的选择,这就是redux saga
AFAIK背后的全部要点。您可以简单地使用takeEvery
(允许多个请求)或takeLatest
来侦听所选项目的更改
操作,并让位于实际执行网络请求的另一个saga
您可以在此处的文档中看到一个示例:
摘录:
import { takeLatest } from 'redux-saga/effects'
function* fetchData(){
try {
const data = yield call(Api.fetchUser, action.payload.url)
yield put({type: "FETCH_SUCCEEDED", data})
} catch (error) {
yield put({type: "FETCH_FAILED", error})
}
}
function* watchFetchData() {
yield takeLatest('FETCH_REQUESTED', fetchData)
}