【发布时间】:2018-02-26 15:36:20
【问题描述】:
我正在使用 redux-saga 进行项目,我有一个问题要问你。我试图用谷歌的力量找到我的问题的答案将近两天,但它没有帮助。
我们有一些函数由 saga 在每个 FETCH_REQUEST 操作上触发。
export function* fetchData(action) {
try {
const usersList = (yield select()).usersList;
// makes API call only if there is no users found in the current state
if(!usersList) {
const data = yield call(Api.fetchUser)
}
yield put({type: "FETCH_SUCCEEDED", usersList})
} catch (error) {
yield put({type: "FETCH_FAILED", error})
}
}
成功时触发 FETCH_SUCCEEDED 操作,我们将接收到的数据保存到状态。但在我看来,“是否进行 API 调用”的决策点并不在正确的位置。 当前的方法会导致产生一些在 sagas 中无用和跳过的操作。如果其他一些 sagas 订阅了 _REQUEST 操作,它们会触发另一个无用的操作,依此类推。
所以问题是 - 检查数据是否需要从 API 或 ReduxStore 加载的“最佳实践”位置是什么?
【问题讨论】:
-
您对这个问题陈述有满意的答案吗?我遇到了同样的问题,对在哪里处理这种情况感到困惑。我看到在组件中处理的一些限制,因为可能有很多组件都有这个用例。选择器就是为此而设计的,但我又在某处读到选择器应该是纯函数等等......
标签: reactjs redux react-redux redux-saga