将 redux saga 与 react 结合使用时,状态如何被拉入 sagas.js
how does state gets pulled in sagas.js when using redux saga with react
我正在阅读一个涉及 redux-saga 的代码库。我刚开始使用 redux-saga,我看到 saga.js 中有许多实例已被拉出。
function* fetchxyz({ Id }) {
try {
const authToken = yield select(state => state.auth.authToken);
const data = yield call(
getxyz1,
authToken,
Id
);
yield put({
type: FETCH_XYZ_SUCCESS,
response:data
});
}
我有点困惑这个状态是如何被拉入这个 saga.js 的。我强烈觉得我在某处缺乏一些理解,因为我不明白状态是如何被拉出的 saga.js .
Redux-saga 是一个 redux 中间件。每个 redux 中间件都可以通过 getState 函数访问 redux 状态。
Redux 文档:https://redux.js.org/api/applymiddleware#arguments
Redux-saga 用法:https://github.com/redux-saga/redux-saga/blob/master/packages/core/src/internal/middleware.js#L13
Sagas 是 redux-saga 库迭代的生成器,然后处理单独产生的效果。要访问 redux saga 中的状态,您可以像示例中那样使用 select
效果。
所以 redux-saga 所做的就是调用提供的选择器函数,并将 getState
函数的 return 值作为其参数。
通过将 return 值作为参数传递给迭代器上的 next
函数,可以将生成的表达式计算为选择器函数的 return 值。这只是正常的生成器行为:
我正在阅读一个涉及 redux-saga 的代码库。我刚开始使用 redux-saga,我看到 saga.js 中有许多实例已被拉出。
function* fetchxyz({ Id }) {
try {
const authToken = yield select(state => state.auth.authToken);
const data = yield call(
getxyz1,
authToken,
Id
);
yield put({
type: FETCH_XYZ_SUCCESS,
response:data
});
}
我有点困惑这个状态是如何被拉入这个 saga.js 的。我强烈觉得我在某处缺乏一些理解,因为我不明白状态是如何被拉出的 saga.js .
Redux-saga 是一个 redux 中间件。每个 redux 中间件都可以通过 getState 函数访问 redux 状态。
Redux 文档:https://redux.js.org/api/applymiddleware#arguments
Redux-saga 用法:https://github.com/redux-saga/redux-saga/blob/master/packages/core/src/internal/middleware.js#L13
Sagas 是 redux-saga 库迭代的生成器,然后处理单独产生的效果。要访问 redux saga 中的状态,您可以像示例中那样使用 select
效果。
所以 redux-saga 所做的就是调用提供的选择器函数,并将 getState
函数的 return 值作为其参数。
通过将 return 值作为参数传递给迭代器上的 next
函数,可以将生成的表达式计算为选择器函数的 return 值。这只是正常的生成器行为: