1. dva框架设计初衷
由于React主要是一个视图层框架,在解决参数和数据传递上面有很大的缺陷,只有父子组件之间才能直接传递数据,后来就出现了Redux。
Redux可以很好的解决React只能在父子组件之间直接参数和数据的弊端,可以通过store来存储state,通过ActionCreators派发action给store,store将state和action传给Reducer,然后通过Reducer改变state,将新的state传给store,state发生变化后就可以渲染,改变视图。
而dva框架设计就是为了将繁琐的redux-saga进行封装(默认是model文件夹),而且还内置了react-router,可以很好的运行react和redux,而且也很好的将路由(router)拆分到一个文件(通常是routes)里面,可以很好的管理路由。所以dva是一个数据流方案,也是一个轻量级的应用框架。
2.models文件夹
dva 通过 model 的概念把一个领域的模型管理起来,包含同步更新 state 的 reducers,处理异步逻辑的 effects,订阅数据源的 subscriptions 。
2.1 State
State 表示 Model 的状态数据,通常表现为一个 javascript 对象(当然它可以是任何值);操作的时候每次都要当作不可变数据(immutable data)来对待,保证每次都是全新对象,没有引用关系,这样才能保证 State