关于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 相关文章推荐
jQuery ui1.7 dialog只能弹出一次问题
Aug 27 Javascript
a标签的href与onclick事件的区别详解
Nov 12 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
Jul 17 Javascript
jQuery添加和删除指定标签的方法
Dec 16 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
Dec 30 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 Javascript
React中ES5与ES6写法的区别总结
Apr 21 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
Jul 03 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
浅谈React和Redux的连接react-redux
Dec 04 Javascript
nginx部署访问vue-cli搭建的项目的方法
Feb 12 Javascript
浅析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
一篇不错的PHP基础学习笔记
2007/03/18 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
js数组的操作指南
2014/12/28 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
python 内置函数filter
2017/06/01 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python中类的属性和方法介绍
2018/11/27 Python
python多线程并发实例及其优化
2019/06/27 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
企划专员岗位职责
2013/12/09 职场文书
中国文明网签名寄语
2014/01/18 职场文书
安全生产宣传标语
2014/06/06 职场文书
党支部活动策划方案
2014/08/18 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS