Una poderosa herramienta para la comunicación entre páginas
Agregue el controlador de capa de datos mobx a su subprograma
Versión actual: 0.2.0
Depende de la versión de mobx: 4.9.2
El mini programa ya admite el uso de npm para instalar paquetes de terceros. Para obtener más información, consulte Soporte de npm.
npm install wechat-weapp-mobx -S --production
Clona o descarga la biblioteca de códigos localmente:
git clone https://github.com/dao42/wechat-weapp-mbox
Copie los archivos dist/mobx.js
, dist/diff.js
y dist/observer.js
directamente al proyecto del mini programa, por ejemplo (supongamos a continuación que instalamos todos los paquetes de terceros en el directorio libs):
cd wechat-weapp-mobx
cp mobx.js <小程序根目录> /libs
cp diff.js <小程序根目录> /libs
cp observer.js <小程序根目录> /libs
El comando anterior copia el paquete en el directorio <小程序根目录>/libs
del mini programa.
Cree un directorio <小程序根目录>/stores
para almacenar la capa de datos.
Crear tiendas mobx
// <小程序根目录>/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 ,
}
Vincular eventos de vinculación de páginas
// <小程序根目录>/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 ( ) {
}
} ) )
ilustrar
Después de completar los dos pasos anteriores, puede acceder a él usando props.todoStore
en wxml y el enlace de datos funcionará automáticamente.
// <小程序根目录>/pages/index/index.wxml
< view > { { props . todoStore . todoText } } </ view >
Enlace automático de datos
Se puede acceder a los datos de las tiendas simultáneamente desde todas las páginas y, cuando se actualicen los datos, la página se actualizará automáticamente. Esto ahorra una gran cantidad de código lógico.
Component ( observerComponment ( {
props : {
todoStore : require ( '../stores/todoStore' ) . default
}
} ) )
Consulte el ejemplo directamente: wechat-weapp-mobx-todos-npm
observerComponment
en componentespage.data
con anticipación para evitar que la representación de la página sea demasiado lenta.Gracias a Danney por su contribución.
Para obtener ejemplos de uso detallados, consulte: wechat-weapp-mobx-todos-npm
Para la versión de prueba real, clone el siguiente repositorio y utilice la mini herramienta de desarrollo de programas para habilitar la vista previa:
git clone https://github.com/dao42/wechat-weapp-mobx-todos-npm.git
Para ejemplos de uso detallados, consulte: wechat-weapp-mobx-todos
Para la versión de prueba real, clone el siguiente repositorio y utilice la mini herramienta de desarrollo de programas para habilitar la vista previa:
git clone https://github.com/dao42/wechat-weapp-mobx-todos.git
Ballu: una herramienta de puntuación de baloncesto en tiempo real
Comentario: Este proyecto es un programa pequeño muy "complejo". Muchas páginas del proyecto necesitan usar websocket para sincronizar las actualizaciones de datos con el servidor. Después de usar
wechat-weapp-mobx
como capa de controlador de datos, el problema del estado de los datos. La sincronización se puede resolver fácilmente. El proyecto final se lanzó con éxito.
$ npm login --registry https://registry.npmjs.org/
$ npm publish
MIT