
1.0 貌似只暴露了有限几个 saga 的方法, 如何引用其他方法

看官方文档里讲了这几个方法
这是哪里的文档? 贴个地址看看。
看源代码看到的....
之前看到 saga 是暴露了所有方法的, dva 只暴露了 saga/effects 部分
我该直接 import { ... } from 'redux-saga' 吗 ?
不需要再引 redux-saga 的。
你看在根目录下再加一个 saga.js
module.exports = require('redux-saga');
这样成吗?
你是想用 delay 和 CANCEL 吗?
对, 现在这个场景是. 不排除 takeEvery takeLatest
不过最好是 @sorrycc 有空的话能出个文档总结下最佳实践, 说明下 dva 引入 saga api 选择中, 在复杂度 和 功能性之间的权衡 , 这样可以使后来者避免误用
毕竟在 dva 里 saga 的分量还是很重的.
我现在的用法是参考 saga 文档里的, dva 的文档里没有, 心里也是忐忑的 🐶
effect 支持 3 种类型:takeEvery、takeLatest 和 watcher。
takeEvery: 每次都执行takeLatest: 只执行最后一次watcher: 通过 take 等 effect 完全自定义 saga默认是 takeEvery,如果要换另两种,用 [function*(){}, options] 的格式,比如:
app.model({
effects: {
addRemote: [*function(action, {put, select, call}) {
/* Your Code Here */
}, { type: 'takeLatest' }]
}
});
或者
const takeLatest = fn => [fn, { type: 'takeLatest' }];
app.model({
effects: {
addRemote: takeLatest(*function(action, { put, select, call }) {
/* Your Code Here */
}
}
});
好的, 谢谢
能引用 delay 方法吗?
delay 不能引,一行代码就可以实现了。
const delay = (timeout) => new Promise(resolve => setTimeout(resolve, timeout));
然后
yield call(delay, 1000);
希望能完善一下API文档,[function*(){}, options]这样的写法在文档中似乎没有提及
这属于高级功能,空点了就会完善这部分的文档。
Most helpful comment
effect 支持 3 种类型:
takeEvery、takeLatest和watcher。takeEvery:每次都执行takeLatest:只执行最后一次watcher:通过take等 effect 完全自定义 saga默认是
takeEvery,如果要换另两种,用[function*(){}, options]的格式,比如:或者