【Redux Saga炼金笔记】1秒内点击3次按钮触发事件
来源:互联网 发布:短信转移软件 编辑:程序博客网 时间:2024/04/27 19:31
配方
- effects: race, take, call
流程
- 首次点击按钮开始计时
- 如果1秒内再点击2次则触发三连击事件
- 未完成三连击则触发超时事件
实现
1 按钮点击时dispatch一个CLICK的action
function Test ({handleClick}) { return ( <div> Click 3 times in one second. <button onClick={handleClick}>Click me!</button> </div> );}Test = connect( () => ({}), (dispatch) => ({ handleClick () { dispatch({type: 'CLICK'}); } }))(Test);
2 使用take监听CLICK
function *clickWatcher () { while (true) { yield take('CLICK'); }}store.runSaga(clickWatcher);
3 在监听到第一个CLICK之后,启动race,竞争者为一个1秒的delay任务和一个take两次CLICK的任务
function *clickWatcher () { while (true) { yield take('CLICK'); const {timeout, success} = yield race({ timeout: call(delay, 1000), success: call(function * () { yield take('CLICK'); yield take('CLICK'); return true; }) }); }}
4 delay任务胜出则超时,反之发动三连击技能
function *handleTripleClick () { alert('Woh~');}function *handleTimeout () { alert('GAME OVER');}function *clickWatcher () { while (true) { yield take('CLICK'); const {timeout, success} = yield race({ timeout: call(delay, 1000), success: call(function * () { yield take('CLICK'); yield take('CLICK'); return true; }) }); if (success) { yield call(handleTripleClick); } else { yield call(handleTimeout); } }}
See the Pen <a href="http://codepen.io/awaw00/pen/oBBdVV/">Redux Saga Cookbooks 01</a> by aaron wang (<a href="http://codepen.io/awaw00">@awaw00</a>) on <a href="http://codepen.io">CodePen</a>. 0 0
- 【Redux Saga炼金笔记】1秒内点击3次按钮触发事件
- 【Redux Saga炼金笔记】做一个可以重试N次的action
- android 按钮点击1次,点击3次和点击6次触发不同的事件
- 按钮点击触发哪些事件
- js触发按钮点击事件
- js触发按钮点击事件
- JS触发点击按钮事件
- js触发按钮点击事件
- js触发按钮点击事件
- 按钮无法触发点击事件
- Redux saga
- iOS解决按钮短时间内多次点击只触发一次事件方法(开始写博客)
- iOS解决按钮短时间内多次点击只触发一次事件方法
- iOS解决按钮短时间内多次点击只触发一次事件方法
- iOS解决定时器按钮短时间内多次点击只触发一次事件方法
- 通过代码触发按钮点击事件
- easyui window点击关闭按钮,触发事件
- jquery 回车触发按钮点击事件
- 判断一个整数是否为回文数
- 直角三角形的判断
- iOS真机调试失败(一)
- android中ListView嵌套GridView,或者ScrollView嵌套GridView
- 数据库的表所占空间大小因素
- 【Redux Saga炼金笔记】1秒内点击3次按钮触发事件
- 微信小程序[全栈]-配置本地Nodejs服务器全过程
- Java学习笔记之Arrays工具类
- APP开发实战151-Android使用try…catch…处理异常
- Scala学习整理[第二十七-二十九章 模块化编程和Java]<Programming In Scala>
- perl unicode
- (c++)有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
- SegmentFault 技术周刊 Vol.20 - 用 Canvas 画个星空
- elasticsearch删除数据