初学Dva.js的一些小理解

210 阅读1分钟

介绍

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

models

       在dva pages的文件夹中,几乎都有一个文件夹是models,在models文件夹中只会有一个js文件,一般根据自己的需要进行命名,例如XXXModels.js。在XXXModels.js里

  • namespace 表示在全局 state 上的 key
  • state 是初始值,在这里是空数组
  • 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的学习主要来自于实验室的代码以及官方文档,了解到的知识尚未贯通。还需再通过编写代码融会贯通。