取消除redux saga中的任务之外的所有任务

时间:2018-01-07 16:55:34

标签: javascript redux redux-saga

我正在阅读来自redux传奇文档的一些高级概念,但我在这里有一个问题。在文档中使用以下代码来分派我们代码中存在的所有操作:

import { select, take } from 'redux-saga/effects'

function* watchAndLog() {
  while (true) {
    const action = yield take('*')
    const state = yield select()

    console.log('action', action)
    console.log('state after', state)
  }
}

使用通配符*我们在应用程序中执行所有操作。有没有办法从一两个具体行动中采取所有行动?我想发送期待来自" LOGIN"和"退出"行动?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

来自take的文档:

  

如果它是一个函数,如果pattern(action)为true,则匹配动作(例如take(action => action.entities)将匹配具有(truthy)实体字段的所有动作。)

所以你可以这样做:

function* watchAndLog() {
  while (true) {
    const action = take(action => ['LOGIN', 'LOGOUT'].indexOf(action.type) < 0);
    ...
  }
}