wechat weapp mobx
1.0.0
頁間通訊的利器
為你的小程式加入mobx資料層驅動
目前版本: 0.2.0
依賴mobx 版本: 4.9.2
小程式已經支援使用npm 安裝第三方包,詳見npm 支持
npm install wechat-weapp-mobx -S --production
clone或下載程式碼庫到本機:
git clone https://github.com/dao42/wechat-weapp-mbox
將dist/mobx.js
, dist/diff.js
和dist/observer.js
檔案直接拷貝到小程式的工程中,例如(下面假設我們把第三方套件都安裝在libs目錄下):
cd wechat-weapp-mobx
cp mobx.js <小程序根目录> /libs
cp diff.js <小程序根目录> /libs
cp observer.js <小程序根目录> /libs
上面的指令將包拷貝到小程式的<小程序根目录>/libs
目錄下
建立一個<小程序根目录>/stores
目錄, 存放資料層.
建立mobx 的stores
// <小程序根目录>/stores/todoStore.js
// 手动安装时引入的路径
// var extendObservable = require('../../libs/mobx').extendObservable;
// npm 包安装引入的路径
var extendObservable = require ( 'wechat-weapp-mobx/mobx' ) . extendObservable ;
var TodoStore = function ( ) {
extendObservable ( this , {
// observable data
todos : [ ] ,
todoText : 'aaa' ,
// computed data
get count ( ) {
return this . todos . length ;
}
} ) ;
// action
this . addTodo = function ( title ) {
this . todos . push ( { title : title } ) ;
}
this . removeTodo = function ( ) {
this . todos . pop ( ) ;
}
}
module . exports = {
default : new TodoStore ,
}
綁定頁面聯動事件
// <小程序根目录>/pages/index/index.js
// 手动安装时引入的路径
// var observer = require('../libs/observer').observer;
// npm 包安装引入的路径
var observer = require ( 'wechat-weapp-mobx/observer' ) . observer ;
// 关键, 监控页面事件, 让 mobx 有机会更新页面数据
Page ( observer ( {
props : {
todoStore : require ( '../stores/todoStore' ) . default ,
} ,
// your other code below
onLoad : function ( ) {
}
} ) )
說明
完成上述兩步之後,你就可以在wxml 中用props.todoStore
這種方式來訪問了, 並且數據聯動已經自動工作.
// <小程序根目录>/pages/index/index.wxml
< view > { { props . todoStore . todoText } } </ view >
數據自動聯動
stores 中的資料可以跨頁面同時訪問,並且資料更新後,頁面也會自動更新。從而節省大量邏輯程式碼。
Component ( observerComponment ( {
props : {
todoStore : require ( '../stores/todoStore' ) . default
}
} ) )
請直接查看範例: wechat-weapp-mobx-todos-npm
observerComponment
語法page.data
,避免頁面渲染過慢。感謝Danney 的貢獻。
詳細的使用例子可參考: wechat-weapp-mobx-todos-npm
真機實測版請clone下面這個repo,用小程式開發工具開啟預覽:
git clone https://github.com/dao42/wechat-weapp-mobx-todos-npm.git
詳細的使用例子可參考: wechat-weapp-mobx-todos
真機實測版請clone下面這個repo,用小程式開發工具開啟預覽:
git clone https://github.com/dao42/wechat-weapp-mobx-todos.git
Ballu -- 一個即時的籃球計分工具
點評: 此專案是一個非常"複雜" 的小程式, 專案多處頁面需要使用websocket 與服務端進行同步的資料更新, 深度使用
wechat-weapp-mobx
作為資料驅動層後, 資料狀態同步的問題輕鬆化解. 最終專案成功上線.
$ npm login --registry https://registry.npmjs.org/
$ npm publish
MIT