Мощный инструмент для связи между страницами.
Добавьте драйвер уровня данных mobx в свой апплет
Текущая версия: 0.2.0
Зависит от версии mobx: 4.9.2
Мини-программа уже поддерживает использование npm для установки сторонних пакетов. Подробности см. в разделе Поддержка npm.
npm install wechat-weapp-mobx -S --production
Клонируйте или загрузите библиотеку кода локально:
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/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 ( ) {
}
} ) )
иллюстрировать
После выполнения двух вышеуказанных шагов вы можете получить к нему доступ с помощью props.todoStore
в wxml, и привязка данных будет работать автоматически.
// <小程序根目录>/pages/index/index.wxml
< view > { { props . todoStore . todoText } } </ view >
Автоматическое связывание данных
Доступ к данным в магазинах можно получить одновременно на всех страницах, и при обновлении данных страница будет автоматически обновляться. Это экономит много логического кода.
Component ( observerComponment ( {
props : {
todoStore : require ( '../stores/todoStore' ) . default
}
} ) )
Пожалуйста, проверьте пример напрямую: wechat-weapp-mobx-todos-npm
observerComponment
в компонентах.page.data
, чтобы избежать слишком медленного рендеринга страницы.Спасибо Дэнни за его вклад.
Подробные примеры использования см. по адресу: wechat-weapp-mobx-todos-npm.
Для фактической тестовой версии клонируйте следующий репозиторий и используйте инструмент разработки мини-программ, чтобы включить предварительный просмотр:
git clone https://github.com/dao42/wechat-weapp-mobx-todos-npm.git
Подробные примеры использования см. по адресу: wechat-weapp-mobx-todos.
Для фактической тестовой версии клонируйте следующий репозиторий и используйте инструмент разработки мини-программ, чтобы включить предварительный просмотр:
git clone https://github.com/dao42/wechat-weapp-mobx-todos.git
Ballu — инструмент для подсчета очков в баскетболе в реальном времени.
Комментарий: Этот проект представляет собой очень «сложную» небольшую программу. Многие страницы проекта должны использовать веб-сокет для синхронизации обновлений данных с сервером. После использования
wechat-weapp-mobx
в качестве уровня драйвера данных возникает проблема статуса данных. синхронизацию можно легко решить. Окончательный проект был успешно запущен.
$ npm login --registry https://registry.npmjs.org/
$ npm publish
Массачусетский технологический институт