dva.js for mini wechat | 小程序版的Dva.js
- Dva.JS的中文文档
- 理解 dva 的 8 个概念 ,以及他们是如何串起来的
- 掌握 dva 的所有 API
- 以上文档请忽略Route部分,因为小程序路由和React的路由还是不一样的
以下能帮你更好地理解和使用 小程序版本的 dva :
必须在app.js
入口文件,使用creatApp
来创建store
,同时请在配置中传入models
的数组来初始化model。用法详细可见
在需要用到store
数据的组件/页面使用connect
来连接store
中的state
,connect
只接受传入mapStateToProps
一个参数。用法详细可见
页面的onLoad
,onShow
,onReady
生命周期函数中可以直接调用this.dispatch
,但更建议您在model
内的subscriptions
中用history.listen
来监听来实现,这也符合Dva的设计规范。用法详细可见
我对history.listen
的传入参数进行了调整,目前传入的参数是{ pathname, query, isBack }
,分别代表当前路由路径(以/开头)
、路由携带参数 Object类型
、是否是从上一个页面返回 Boolean类型
,其他的如果有特殊需要请自行参考源码进行调整或者反馈给我,谢谢。用法详细可见
由于微信小程序不支持regeneratorRuntime
,所以在models
与services
内请记得引用regeneratorRuntime
。用法详细可见
关于路由的跳转:可以使用this.dispatch(routerRedux({...}))
,也可以使用wx.navigateTo
,这里routerRedux
等价于wx.navigateTo
,但不等价于wx.redirectTo
等其他路由跳转的接口;如需要获取当前页面的路由信息,可以获取我已经预定义好的model,名称为@@route
。用法详细可见
dispatch
在使用connect
函数初始化过的页面,均会传入的dispatch
,使用this.dispatch
来调用,传入参数与Dva一致。用法详细可见
参考了labrador 库对全局的 wx 变量进行了封装为_wx
,将所有 wx 对象中的异步方法进行了Promise支持, 除了同步的方法,这些方法往往以 on*、create*、stop*、pause*、close* 开头或以 *Sync 结尾,这样在model
的effects
中。你可以直接使用yield call(_wx.login)
的方法来“同步”的获取数据。用法详细可见
使用getNodeAttr
可以用于获取事件中WXML节点的data-
参数。用法详细可见
目前所能想到的就这些,以上所提到的均有在Demo中有体现,可自行查阅,其他的待补充,欢迎提议
简单计数器&斗鱼接口,该Demo已经迁移到本项目的Demo
目录下- 公厕助手:用于查找附近公厕,并可导航【限龙岩地区】。
这里以Demo为例
- 克隆本项目
git clone https://github.com/rojer95/dva-mini-wechat.git
cd dva-mini-wechat
- 安装依赖
yarn install
克隆小程序的Demo到目录src下git clone https://github.com/rojer95/dva-mini-wechat-demo.git src
- 在小程序IDE中打开demo目录的项目
- 在
dva-mini-wechat
目录下运行命令yarn build
编译依赖包,可以看到在demo\lib
目录下生成了index.js
文件 - 在小程序IDE编译并运行即可(必须开始ES6转ES5)
目前还没有写测试用例,以及性能方面的测试,后面有时间补上,欢迎各位提各种意见,感谢支持,谢谢。