All Projects → yautah → Dva Wxapp

yautah / Dva Wxapp

微信小程序的dva集成

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Dva Wxapp

Wux Weapp
🐶 一套组件化、可复用、易扩展的微信小程序 UI 组件库
Stars: ✭ 4,706 (+2471.58%)
Mutual labels:  mini-program, weapp, wxapp
Wxapp Webpack Plugin
📦 微信小程序 webpack 插件
Stars: ✭ 185 (+1.09%)
Mutual labels:  mini-program, weapp, wxapp
Wxapp Boilerplate
使用 webpack, babel, scss 开发的微信/支付宝小程序项目脚手架
Stars: ✭ 367 (+100.55%)
Mutual labels:  mini-program, weapp, wxapp
Wxa
🖖 渐进式小程序开发框架。轻量级的渐进式小程序开发框架,专注于小程序原生开发,提供更好的工程化、代码复用能力,提高开发效率并改善开发体验。
Stars: ✭ 149 (-18.58%)
Mutual labels:  mini-program, weapp
Alaweb
一套 Vue 代码,多端可用(H5、小程序、苹果App、安卓App、头条等)。系统含150+页面,200+组件(5端通用),30+元件(每个终端独立完成)
Stars: ✭ 837 (+357.38%)
Mutual labels:  weapp, wxapp
Taro scaffold
基于 Taro / dva / redux-saga / react 的微信小程序脚手架,同时集成了 sprite 。
Stars: ✭ 24 (-86.89%)
Mutual labels:  wxapp, dva
Wechat Weapp Mapdemo
微信小程序开发mapdemo,地图导航、marker标注
Stars: ✭ 491 (+168.31%)
Mutual labels:  weapp, wxapp
Wxapp
这是一个Sublime的插件, 用来开发<微信小程序>.
Stars: ✭ 42 (-77.05%)
Mutual labels:  mini-program, wxapp
Weapp Fontawesome Component
微信小程序的 fa 图标模块
Stars: ✭ 21 (-88.52%)
Mutual labels:  weapp, wxapp
Omi
Front End Cross-Frameworks Framework - 前端跨框架跨平台框架
Stars: ✭ 12,153 (+6540.98%)
Mutual labels:  mini-program, weapp
We Cropper
微信小程序图片裁剪工具
Stars: ✭ 1,972 (+977.6%)
Mutual labels:  weapp, wxapp
Miniapp
微信小程序服务端 SDK (for Golang)
Stars: ✭ 815 (+345.36%)
Mutual labels:  weapp, wxapp
Leshare Seller Wepy
基于小程序的店铺商家管理端,采用wepy框架开发
Stars: ✭ 687 (+275.41%)
Mutual labels:  weapp, wxapp
Leshare Shop Wepy
基于微信小程序的在线商城,采用wepy框架开发
Stars: ✭ 839 (+358.47%)
Mutual labels:  weapp, wxapp
Taro Msparis
🌱用 React 编写的基于Taro + Dva构建的适配不同端(微信/百度/支付宝小程序、H5、React-Native 等)的时装衣橱
Stars: ✭ 1,203 (+557.38%)
Mutual labels:  wxapp, dva
Wechat Weapp Movie
🎬电影推荐 - 微信小程序
Stars: ✭ 1,355 (+640.44%)
Mutual labels:  weapp, wxapp
Create Wxapp Page
创建微信小程序页面的命令行工具
Stars: ✭ 37 (-79.78%)
Mutual labels:  mini-program, wxapp
Taro Music
🔥基于taro + dva + typescript 开发的音乐播放器小程序🎵
Stars: ✭ 154 (-15.85%)
Mutual labels:  weapp, dva
Okam
Mini program development framework
Stars: ✭ 399 (+118.03%)
Mutual labels:  weapp, wxapp
Tina
💃 一款轻巧的渐进式微信小程序框架
Stars: ✭ 1,153 (+530.05%)
Mutual labels:  weapp, wxapp

dva-wxapp

小程序开发中使用dva,dva是什么?

使用此组件需要依赖小程序基础库 2.2.1 以上版本,同时依赖开发者工具的 npm 构建。具体详情可查阅官方 npm 文档

安装

npm install --save dva-wxapp

开始使用

在app.js中初始化 DVA

import dva, { createLoading, createLogger } from 'dva-wxapp'


//创建app
const dvapp = dva.create({ initialReducer: {} })

//开启 dva-loading
dvapp.use(createLoading({ effects: true }))

//启动dva
dvapp.start()

App({
  ...dvapp,

  globalData: { },

  onLaunch: function() {
  },
})

编写并加载 model

// global.js
export default {
  namespace: 'global',

  state: {
    location: null
  },

  subscriptions: {
    init({ dispatch }) {
      dispatch({type: 'getLocation'})
    },
  },

  reducers: {},

  effects: {
    *getLocation(_, {call, put}){
      try {
        const res = yield call(wxp.getLocation)
        yield put({type: '@@locationSuccess', payload: {location: res}})
        yield put({type: 'updateState', payload: {location: res}})
      } catch (e) {
        console.error(e)
        yield put({type: '@@locationFailed'})
      }
    }
  },
}

在合适的位置载入model

譬如在dva start之前

import global from 'global.js'

getApp().model(global)

//启动dva
dvapp.start()

考虑到分包加载的问题,你也可以选择把model分布到各个分包, 在page初始化前载入model,例如

import global from 'global.js'
getApp().model(global)
Page({
 ....
})

connect model 到页面

熟悉的connect, 熟悉的味道

//index.js
import { connect, createSelector } from 'dva-wxapp'
import wxp from '../../utils/wxp'

//使用 reselect 创建 selector
const getLocationTxt = createSelector(
  (store) => store.global.location,
  (location) => {
    return location ?  `${location.latitude} , ${location.longitude}` : ''
  }
)

const mapState = (store) => {
  return {
    location: store.global.location,
    locating: store.loading.effects['global/getLocation'],
    locationTxt : getLocationTxt(store)
  }
}

Page(
  connect(mapState)({
    data: {
    },


    onLoad: function() {
    },

    handleTap(){
      this.dispatch({type:'global/getLocation'})
    }

  }),
)

一些issule

  1. 使用此组件需要依赖小程序基础库 2.2.1 以上版本,同时依赖开发者工具的 npm 构建。项目设置中请打开“增强编译”选项,redux-saga依赖regeneratorRuntime, 需要增强编译的支持。

  2. dva在app中初始化后,请务必解构赋值到App中,如:

App({
  ...dvapp,

  globalData: { },

  onLaunch: function() {
  },
})
  1. 项目中同时内置了 redux-logger, dva-loading, reselect等lib, 代码不大,方便使用,具体请见example。

感谢以下项目

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].