mobx 学习:安装与配置

mobx 入门之安装与配置
更新于: 2021-12-19 12:57:29

安装

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,笔者认为可以基本忽略影响,毕竟装饰器确实使用起来更简洁一些。

参考

https://juejin.cn/post/6979095356302688286#heading-20

https://zh.mobx.js.org/installation.html