reactjs - 了解在 redux saga 工作中生效吗?
问题描述
我正在通过 youtube 上的课程构建一个应用程序。但我并不真正了解take
效果工作。我知道take
效果会暂停,直到收到操作为止。
src/sagas/statsSaga.js
function* watchStatsRequest() {
while (true) {
const { images } = yield take(IMAGES.LOAD_IMAGES_SUCCESS);
for (let i = 0; i < images.length; i++) {
yield fork(handleStatsRequest, images[i].id);
}
}
}
如何yield take(IMAGES.LOAD_IMAGES_SUCCESS)
返回图像数组?我的完整代码:https ://codesandbox.io/s/github/Kalipts/images-load-saga?file=/src/sagas/statsSaga.js
解决方案
take
等待IMAGES.LOAD_IMAGES_SUCCESS
动作被调度并在动作被调度后返回动作对象。该操作具有以下结构(基于您的沙箱)
{
type: IMAGES.LOAD_IMAGES_SUCCESS,
images: images,
}
这个说法
const { images } = yield take(IMAGES.LOAD_IMAGES_SUCCESS);
将通过解构从动作对象中获取 images 属性,并返回一个名为 images 的变量,其中包含动作对象的 images 属性的数据
为简单起见,代码可以这样改写
//wait for IMAGES.LOAD_IMAGES_SUCCESS to be dispatched
const action = yield take(IMAGES.LOAD_IMAGES_SUCCESS);
//assign the images property from the resulting action object to a new variable
const images = action.images
推荐阅读
- android - 如何使用共享首选项保存评分栏值?
- bash - 即使我指定了执行它的程序,我是否需要在脚本名称之前指定 ./(点斜杠)?
- r - ggplot:绘制具有重复时间值的时间序列
- eclipse - Eclipse 插件错误:“commons-codec 不存在”
- c# - 在C#中合并两个具有相似列的数据表
- c - C - 读取未知格式的输入
- javascript - 如何将函数作为属性返回?
- javascript - Javascript在工作线程中执行任务
- recursion - “log n”和“n”的存在如何影响这一点?因为有另一个函数相乘
- google-cloud-platform - 通过请求属性或 URL 路径限制对 GCE HTTP(S) 负载平衡器的访问