介绍
首先,dva是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。
models
在dva pages的文件夹中,几乎都有一个文件夹是models,在models文件夹中只会有一个js文件,一般根据自己的需要进行命名,例如XXXModels.js。在XXXModels.js里
namespace表示在全局 state 上的 keystate是初始值,在这里是空数组reducers等同于 redux 里的 reducer,接收 action,同步更新 state
在XXXModels.js这个文件中,一般编写着models文件夹所在的上级文件夹中其他js文件所需要的函数。接下来就是将XXXModels.js与其他的js文件连接起来,dva 提供了 connect 方法。如果你熟悉 redux,这个 connect 就是 react-redux 的 connect 。例如:
@connect(({DictionaryModel, loading})=>({
DictionaryModel,
loading,
DataFetch: loading.effects['DictionaryModel/fetch'],
}))
dispatch
dispatch 是一个函数方法,用来将 Action 发送给 State。connect 的 Component 会自动在 props 中拥有 dispatch 方法。通过dispatch方法发起一些 action 通知 Store 数据获取成功了。
总结,
目前dva的学习主要来自于实验室的代码以及官方文档,了解到的知识尚未贯通。还需再通过编写代码融会贯通。