Redux

Action, Reducer,Store


Generator函数

yield表达式本身没有返回值,或者说总是返回undefined

next方法的参数表示上一个yield表达式的返回值,所以在第一次使用next方法时,传递参数是无效的

yield*后面的 Generator 函数(没有return语句时),等同于在 Generator 函数内部,部署一个for...of循环



异步处理redux-saga

redux本身不能处理异步消息,因此需要中间件

在saga.js里分成三部分

①worker saga :做所有的工作,例如异步请求

②watcher : 监听dispacth的actions,调用对应的worker saga

用yeild*,表示调用一个generator函数

api: takeEvery:对每个action都回调一个函数

takeLatest:对最新的action回调一个函数

watcher里面的yield后面的操作有:

select:选择state上的一个数据select(state=>state.property)

 put:相当于dispatch,put(action)

 take:等待一个action, take(action.type)

 call:发起一个异步操作, call(function,args),阻塞操作

 fork:发起一个异步操作,非阻塞

cancel:取消一个effect,如果它已完成,则说明也不做。cancel(effect)

执行多个指令:const [A,B]=yield [call(),call()]

 竞争: yield race()

const {score, timeout}  = yield race({
      score  : call( play, getState),
      timeout : call(delay, 60000)
    })


  

③root saga:saga的入口


DVA框架里的redux-saga

{

namespace,

state,

reducers(同步),

effects(异步)

}




注意:对store里面的数组更新前必须深拷贝

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值