React 第十一章 Dva

Dva 是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。

Dva 的本意,是将基于 React 技术栈中常用到的库集成到一起。当时,React 社区中最流行的应用架构方案如下:

Dva 则是将上面三个 React 工具库包装在一起,简化了 API,让开发 React 应用更加方便和快捷。因此:

Dva = React-Router + Redux + Redux-saga

特性

  • 易学易用,仅有 6 个 api,对 redux 用户尤其友好,配合 umi 使用后更是降低为 0 API
  • elm 概念,通过 reducers, effects 和 subscriptions 组织 model
  • 插件机制,比如 dva-loading 可以自动处理 loading 状态,不用一遍遍地写 showLoading 和 hideLoading
  • 支持 HMR,基于 babel-plugin-dva-hmr 实现 components、routes 和 models 的 HMR

数据流向

数据的改变发生通常是通过用户交互行为或者浏览器行为(如路由跳转等)触发的,当此类行为会改变数据的时候可以通过 dispatch 发起一个 action,如果是同步行为会直接通过 Reducers 改变 State

image-20221105162108061 如果是异步行为(副作用)会先触发 Effects 然后流向 Reducers 最终改变 State。 image-20221105162152274

Dva 中的核心概念:

  • app.model
    • namespace: 当前 Model 的名称。整个应用的 State,由多个小的 ModelStatenamespacekey 合成
    • state: 该 Model 当前的状态。数据保存在这里,直接决定了视图层的输出
    • reducers: Action 处理器,处理同步动作,用来算出最新的 State
    • effectsAction 处理器,处理异步动作,Effect 是一个 Generator 函数,内部使用 yield 关键字,标识每一步的操作(不管是异步或同步)
      • dva 提供多个 effect 函数内部的处理函数,比较常用的是 callput
      • call:执行异步函数
      • put:发出一个 Action,类似于 dispatch
    • </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值