了解 take effect in redux saga work?

Understand take effect in redux saga work?

我正在开发一个应用程序,然后是 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) return 图像数组? 我的完整代码:https://codesandbox.io/s/github/Kalipts/images-load-saga?file=/src/sagas/statsSaga.js

take 等待分派 IMAGES.LOAD_IMAGES_SUCCESS 动作,并在分派该动作后 return 发送动作对象。该操作具有以下结构(基于您的沙箱)

 {
    type: IMAGES.LOAD_IMAGES_SUCCESS,
    images: images,
 }

此声明

const { images } = yield take(IMAGES.LOAD_IMAGES_SUCCESS);

将通过解构从动作对象中获取图像 属性 和 return 一个名为 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