关于redux-saga中take使用方法详解


Posted in Javascript onFebruary 27, 2018

本文介绍了关于redux-saga中take使用方法详解,分享给大家,具体如下:

带来一个自己研究好久的API使用方法.

redux-saga中effect中take这个API使用方式,用的多的是call,put,select,但take这个平常还真没什么机会用上,也不清楚在哪里使用才好,不管怎么样,既然是redux-saga写出来的,肯定是有他的用法的,不管37 21,先学会使用方法再说.

先看看介绍:

take

take的表现同takeEvery一样,都是监听某个action,但与takeEvery不同的是,他不是每次action触发的时候都相应,而只是在执行顺序执行到take语句时才会相应action。

当在genetator中使用take语句等待action时,generator被阻塞,等待action被分发,然后继续往下执行。

takeEvery只是监听每个action,然后执行处理函数。对于何时相应action和 如何相应action,takeEvery并没有控制权。

而take则不一样,我们可以在generator函数中决定何时相应一个action,以及一个action被触发后做什么操作。

最大区别:take只有在执行流达到时才会响应对应的action,而takeEvery则一经注册,都会响应action。

上代码:

effects: {
 * takeDemo1({payload}, {put, call, take}) {

 },
 * takeInputChange({payload}, {put, call, take,takeEvery,takeLatest}) {
  // yield call(delay,1000);
  console.log(takeEvery);
  // for (let i = 0; i < 3; i++) {
   const action = yield take('takeBlur'});
   console.log(action, 'action');
   console.log(payload.value);
  // }

 },
 * takeBlur() {
  console.log(323)
 },
}
changeHandle(e){
 this.props.dispatch({type:'takeInputChange',payload:{value:e.target.value}})
}
blur(){
 this.props.dispatch({type:'takeBlur'})
}
render() {

 return (
  <div style={{position: 'relative'}}>
   <Input onChange={this.changeHandle.bind(this)} onBlur={this.blur.bind(this)}/> 
  </div>
  )
}

页面上有一个input,绑定了两个方法,第一个是onchange方法,一个是onBlur方法,

当input值改变 的时候,通过 this.props.dispatch({type:'takeInputChange'}),调用此函数,但是因为遇到了take的方法,不能往下继续执行了(暂停了),如果这里的take换成了takeEvery则大有不同,函数会继续执行,就是下面的两个console会执行,

而takeEvery执行的方法则放在它的回调里了,看下面代码

yield takeEvery('takeBlur',()=>{console.log(payload.value)});

需要强调的是每次input改变的时候都会触发这个函数,所以每次改变的时候,会看到控制台都会打印一次console里的值.

接下来,如果input失去焦点后,则会执行onBlur方法,此时调用this.props.dispatch({type:'takeBlur'});

在takeInputChange里的take因为监听到了takeBlur这个action,那么就会继续执行需要执行的内容.

这个take反正是研究了还算长的时间,不知道这个东西在哪些时候能够派的上用场

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使Ext的Template可以解析二层的json数据的方法
Dec 22 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
Oct 14 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
Jquery 分页插件之Jquery Pagination
Aug 25 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
JS截取字符串实例详解
Nov 24 Javascript
使用Xcache缓存器加速PHP网站的配置方法
Apr 22 Javascript
详解wow.js中各种特效对应的类名
Sep 13 Javascript
node中modules.exports与exports导出的区别
Jun 08 Javascript
VUE中setTimeout和setInterval自动销毁案例
Sep 07 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
浅析Visual Studio Code断点调试Vue
Feb 27 #Javascript
angularJs 表格添加删除修改查询方法
Feb 27 #Javascript
ExtJs整合Echarts的示例代码
Feb 27 #Javascript
angularJS实现动态添加,删除div方法
Feb 27 #Javascript
浅谈React中的元素、组件、实例和节点
Feb 27 #Javascript
AngularJS动态添加数据并删除的实例
Feb 27 #Javascript
JS严格模式知识点总结
Feb 27 #Javascript
You might like
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
JS画5角星方法介绍
2013/09/17 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
简单实现js浮动框
2016/12/13 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
Python实现将Excel转换为json的方法示例
2017/08/05 Python
python实现内存监控系统
2021/03/07 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
怎样创建、运行java程序
2014/08/01 面试题
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
公司活动方案范文
2014/03/06 职场文书
学习演讲稿范文
2014/05/10 职场文书
管理建议书范文
2014/05/13 职场文书
机关搬迁方案
2014/05/18 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python