-
什么是dva?
dva首先是一个基于redux和redux-saga的数据流解决方案。为了简化开发,dva还额外内置了reac-router和fetch。可以把它理解为一款轻量级的应用框架 -
特性
- 简单易学,仅仅有6个api,对redux用户及其友好
- 通过reducer,effect和subscripions组织model
-
数据流向
PPrerEAKbIoDZYr.png
所有的state通过connect流向组件,组件听过dispatch发起action请求,通过mode中的reducer和effect去改变state,effect副作用函数统一call/fock 同步或者异步与服务进行数据交互。
-
model介绍
每个model中都包含6个api,分别是state,Action,dispatch reducer,effect Subscription- state
state表示model的状态数据,通常是一个JavaScript对象。操作时候每次都要当做不可变数据对待,保证每次都是全新对象,没有引用关系,这样才能保证State的独立性 - Action
Action是一个普通的JavaScript对象,是改变State的唯一途径,无论是UI事件,网络回调,还是websocket等数据源获取数据,最终都是通过dispatch函数调用一个action - dispatch
dispatch 函数是一个触发action函数,dispatch可以看成是触发这个歌行为的方式 - reducer
reducer函数接收两个参数,reducer来自函数式编程 - Effect
Effect 表示为副作用函数,在应用中最常见的就是异步操作。dva为了控制副作用的操作,底层是引用了redux-saga 做异步流程,由于采用了函数式编程(generator函数),所以讲异步转换成同步,从而Effect转成纯函数 - Subscription
Subscription 是一种从源获取数据的方法。它在函数被注册的时候调用
- state
网友评论