我正在阅读来自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"和"退出"行动?有什么想法吗?
答案 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);
...
}
}