Uma ferramenta poderosa para comunicação entre páginas
Adicione o driver da camada de dados mobx ao seu miniaplicativo
Versão atual: 0.2.0
Depende da versão mobx: 4.9.2
O miniprograma já suporta o uso do npm para instalar pacotes de terceiros. Para obter detalhes, consulte suporte ao npm.
npm install wechat-weapp-mobx -S --production
Clone ou baixe a biblioteca de códigos localmente:
git clone https://github.com/dao42/wechat-weapp-mbox
Copie os arquivos dist/mobx.js
, dist/diff.js
e dist/observer.js
diretamente para o projeto do miniprograma, por exemplo (suponha abaixo que instalamos todos os pacotes de terceiros no diretório libs):
cd wechat-weapp-mobx
cp mobx.js <小程序根目录> /libs
cp diff.js <小程序根目录> /libs
cp observer.js <小程序根目录> /libs
O comando acima copia o pacote para o diretório <小程序根目录>/libs
do miniprograma.
Crie um diretório <小程序根目录>/stores
para armazenar a camada de dados.
Crie lojas 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 vinculação de página
// <小程序根目录>/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
Depois de concluir as duas etapas acima, você pode acessá-lo usando props.todoStore
em wxml, e a ligação de dados funcionará automaticamente.
// <小程序根目录>/pages/index/index.wxml
< view > { { props . todoStore . todoText } } </ view >
Ligação automática de dados
Os dados nas lojas podem ser acessados simultaneamente nas páginas e, quando os dados forem atualizados, a página será atualizada automaticamente. Isso economiza muito código lógico.
Component ( observerComponment ( {
props : {
todoStore : require ( '../stores/todoStore' ) . default
}
} ) )
Por favor, verifique o exemplo diretamente: wechat-weapp-mobx-todos-npm
observerComponment
em componentespage.data
com antecedência para evitar que a renderização da página seja muito lenta.Obrigado a Danney por sua contribuição.
Para exemplos de uso detalhados, consulte: wechat-weapp-mobx-todos-npm
Para a versão de teste real, clone o seguinte repositório e use a ferramenta de desenvolvimento de miniprograma para ativar a visualização:
git clone https://github.com/dao42/wechat-weapp-mobx-todos-npm.git
Para exemplos de uso detalhados, consulte: wechat-weapp-mobx-todos
Para a versão de teste real, clone o seguinte repositório e use a ferramenta de desenvolvimento de miniprograma para ativar a visualização:
git clone https://github.com/dao42/wechat-weapp-mobx-todos.git
Ballu - uma ferramenta de pontuação de basquete em tempo real
Comentário: Este projeto é um pequeno programa muito "complexo". Muitas páginas do projeto precisam usar o websocket para sincronizar as atualizações de dados com o servidor. Depois de usar
wechat-weapp-mobx
como a camada do driver de dados, o problema do status dos dados. a sincronização pode ser facilmente resolvida.
$ npm login --registry https://registry.npmjs.org/
$ npm publish
MIT