mobx 学习:安装与配置
mobx 入门之安装与配置
安装
npm install --save mobx
与 babel 结合使用的时候注意
当 MobX 与 TypeScript 或者 Babel一起使用时,且计划使用类;因为 TC-39 不是默认配置,请检查你的配置文件,确保使用 TC-39 规范兼容的配置转换类字段。否则,无法在初始化类字段之前使其可观察。
当 MobX 与 TypeScript 或者 Babel一起使用时,且计划使用类;因为 TC-39 不是默认配置,请检查你的配置文件,确保使用 TC-39 规范兼容的配置转换类字段。否则,无法在初始化类字段之前使其可观察。
Babel: 请确保至少使用版本号为7.12的babel.
使用
@babel/plugin-proposal-class-properties plugin
babel针对类属性的配置为 ["@babel/plugin-proposal-class-properties", { "loose": false }]
TypeScript, 设置编译器选项为 "useDefineForClassFields": true
与 proxy 不兼容的场景需要配置
import { configure } from "mobx";
configure({ useProxies: "never" }) // Or "ifavailable".
MobX和装饰器
如果您以前使用过 MobX
,或者如果您遵循了在线教程,则可能会看到 MobX
支持装饰器,例如 @observable
。在 MobX 6
中,我们选择默认情况下远离装饰器,以最大程度地与标准JavaScript
兼容。如果您启用了它们,它们仍然可以使用 enable them。
V6之前推荐,为什么现在不推荐了
为什么MobX新的V6版本,不再推荐类的装饰器语法,而是建议用makeObservable的方式去修饰Store
- 因为装饰器语法尚未定案,纳入 ES 标准的时间遥遥无期,且未来制定的标准可能与当前的装饰器实现方案有所不同。
- 所以出于兼容性,MobX 6中不推荐使用装饰器,并建议使用 makeObservable / makeAutoObservable 代替。
- 但项目中如果使用的是 TS,笔者认为可以基本忽略影响,毕竟装饰器确实使用起来更简洁一些。
参考