redux-saga

前言

redux-saga是redux的一个中间件。解决数据流中redux异步的一些痛点。
redux-saga是解决redux的痛点!!!redux是解决react的痛点!!!然后dva是解决react和react-router和redux-saga写起来麻烦的痛点!!!各种拔插组合。

redux痛点

  • 异步请求新的state的时候,写起来不优雅。
  • dispatch这个方法,不是所有的文件夹中都有。(比如工具类
  • saga在项目变得越来越大,越来越复杂的时候,会体现出它比thunk的好处。

    dva中使用到的saga重点API

  • call、fork、put、select
  • takeEvery 监听函数,打劫
  • Call: call用来调用异步函数,将异步函数和函数参数作为call函数的参数传入,返回一个js对象。saga引入他的主要作用是方便测试,同时也能让我们的代码更加规范化。
  • Put:put是saga对Redux中dispatch方法的一个封装,调用put方法后,saga内部会分发action通知Store更新state。
  • Fork:非阻塞任务调用机制:上面我们介绍过call可以用来发起异步操作,但是相对于generator函数来说,call操作是阻塞的,只有等promise回来后才能继续执行,而fork是非阻塞的 ,当调用fork启动一个任务时,该任务在后台继续执行,从而使得我们的执行流能继续往下执行而不必一定要等待返回。
  • Select: 获取state数据。