Пытаюсь написать store для mobx. Простейший пример:
class AppStore {
@observable lock;
constructor() {
this.lock = false;
}
@action('toggle lock')
toggleLock() {
this.lock = !this.lock;
}
@computed get isLocked() {
return this.lock;
}
}
const appStore = new AppStore();
после обработки babel-cli c параметрами
--plugins transform-class-properties,transform-decorators-legacy
--source-maps
--no-comments
--stage 0
--presets=react,es2015
декоратор @observable не применяется. Никаких ошибок не выдается. Применение декоратора "в лоб":
extendObservable(this, {
lock: false
});
срабатывает. Самое интересное, что декораторы @action и @computed применились без проблем.
Что я забыл указать/настроить?
в бандл подключаются:
global.observable = require('mobx').observable;
global.computed = require('mobx').computed;
global.action = require('mobx').action;
Ответ заключен в пропущенной по невнимательности строчке документации (https://mobx.js.org/best/decorators.html):
Note that the order of plugins is important: transform-decorators-legacy should be listed first.
Имеет значение порядок указания плагинов. Плагин "transform-decorators-legacy" должен быть первым в списке. После изменения порядка все заработало
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости