/dva-mini-wechat

dva.js for mini wechat

Primary LanguageJavaScript

dva-mini-wechat

dva.js for mini wechat | 小程序版的Dva.js


关于Dva.js的使用方法

一些特殊之处 OR 使用方法

以下能帮你更好地理解和使用 小程序版本的 dva :

1.creatApp如何使用?

必须在app.js入口文件,使用creatApp来创建store,同时请在配置中传入models的数组来初始化model。用法详细可见

2.connect如何使用?

在需要用到store数据的组件/页面使用connect来连接store中的stateconnect只接受传入mapStateToProps一个参数。用法详细可见

3.页面初始化如何调用dispatch获取数据?

页面的onLoad,onShow,onReady生命周期函数中可以直接调用this.dispatch,但更建议您在model内的subscriptions中用history.listen来监听来实现,这也符合Dva的设计规范。用法详细可见

4.监听路由如何使用?

我对history.listen的传入参数进行了调整,目前传入的参数是{ pathname, query, isBack },分别代表当前路由路径(以/开头)路由携带参数 Object类型是否是从上一个页面返回 Boolean类型,其他的如果有特殊需要请自行参考源码进行调整或者反馈给我,谢谢。用法详细可见

5.为何models与services报regeneratorRuntime undefined错误?

由于微信小程序不支持regeneratorRuntime,所以在modelsservices内请记得引用regeneratorRuntime用法详细可见

6.如何页面跳转?

关于路由的跳转:可以使用this.dispatch(routerRedux({...})),也可以使用wx.navigateTo,这里routerRedux等价于wx.navigateTo,但不等价于wx.redirectTo等其他路由跳转的接口;如需要获取当前页面的路由信息,可以获取我已经预定义好的model,名称为@@route用法详细可见

7.dispatch如何调用?

dispatch在使用connect函数初始化过的页面,均会传入的dispatch,使用this.dispatch来调用,传入参数与Dva一致。用法详细可见

8.如何优雅的调用微信的接口?

参考了labrador 库对全局的 wx 变量进行了封装为_wx,将所有 wx 对象中的异步方法进行了Promise支持, 除了同步的方法,这些方法往往以 on*、create*、stop*、pause*、close* 开头或以 *Sync 结尾,这样在modeleffects中。你可以直接使用yield call(_wx.login)的方法来“同步”的获取数据。用法详细可见

9.事件获取传入参数有没有更简便的方法?

使用getNodeAttr 可以用于获取事件中WXML节点的data-参数。用法详细可见

目前所能想到的就这些,以上所提到的均有在Demo中有体现,可自行查阅,其他的待补充,欢迎提议

Demos OR 案例

  • 简单计数器&斗鱼接口,该Demo已经迁移到本项目的Demo目录下
  • 公厕助手:用于查找附近公厕,并可导航【限龙岩地区】。

快速上手

这里以Demo为例

  1. 克隆本项目 git clone https://github.com/rojer95/dva-mini-wechat.git
  2. cd dva-mini-wechat
  3. 安装依赖 yarn install
  4. 克隆小程序的Demo到目录src下 git clone https://github.com/rojer95/dva-mini-wechat-demo.git src
  5. 在小程序IDE中打开demo目录的项目
  6. dva-mini-wechat目录下运行命令yarn build编译依赖包,可以看到在demo\lib目录下生成了index.js文件
  7. 在小程序IDE编译并运行即可(必须开始ES6转ES5)

关于测试与其他

目前还没有写测试用例,以及性能方面的测试,后面有时间补上,欢迎各位提各种意见,感谢支持,谢谢。