如何在 redux-saga 函数中从状态/存储中获取内容?
2022-08-30 02:35:04
如何在 saga 函数中访问 redux 状态?
简短的回答:
import { select } from 'redux-saga/effects';
...
let data = yield select(stateSelectorFunction);
如何在 saga 函数中访问 redux 状态?
简短的回答:
import { select } from 'redux-saga/effects';
...
let data = yield select(stateSelectorFunction);
正如@markerikson已经说过的那样,公开了一个非常有用的API select()
来调用状态上的一个,以便在saga中获取它的某些部分。redux-saga
selector
对于您的示例,一个简单的实现可以是:
/*
* Selector. The query depends by the state shape
*/
export const getProject = (state) => state.project
// Saga
export function* saveProjectTask() {
while(true) {
yield take(SAVE_PROJECT);
let project = yield select(getProject); // <-- get the project
yield call(fetch, '/api/project', { body: project, method: 'PUT' });
yield put({type: SAVE_PROJECT_SUCCESS});
}
}
除了@markerikson推荐的文档之外,还有一个非常好的视频教程,由D. Abramov解释如何使用Redux。在Twitter上也检查这个有趣的帖子。selectors
这就是“选择器”函数的用途。您将它们传递整个状态树,它们返回状态的某些部分。调用选择器的代码不需要知道数据处于状态的位置,只需要知道数据是返回的。有关一些示例,请参阅 http://redux.js.org/docs/recipes/ComputingDerivedData.html。
在 saga 中,select()
API 可用于执行选择器。