使用带有create-react-app的MobX可观察装饰器

Sco*_*ott 10 reactjs webpack babeljs mobx

MobX文档告诉我,我必须"使用变换插件变换装饰遗留并确保它是第一个在插件列表",为了使装饰工作.MobX样板项目表明我需要一个.babelrc:

{
  "presets": [
    "react",
    "es2015",
    "stage-1"
  ],
  "plugins": ["transform-decorators-legacy", "react-hot-loader/babel"]
}
Run Code Online (Sandbox Code Playgroud)

如何使用create-react-app生成的项目执行此操作?任何尝试使用@装饰器错误..babelrc项目被"弹出"后甚至没有.

小智 11

现在有一个替代方案,在接受答案的时候没有.这是自定义反应脚本.它将允许您在CRA应用程序中启用装饰器,SASS和其他细节.并且它没有弹出它.

有一篇很好的中篇文章解释了它背后的想法.


Ali*_*lik 9

除非你,否则你不能使用装饰器语法eject.但是,您可以使用MobX,@因为它只是一种语法糖.

丹·阿布拉莫夫已经明确说明了这一点

我们的立场很简单:我们添加足够稳定的变换(如异步/等待)或Facebook大量使用的变换(如类属性).只有那样才能让我们有信心建议它们,因为如果标准中的某些内容发生变化,我们将编写并发布一个codemod来迁移它们.

由于我们目前不使用装饰器,如果标准变得不兼容,我们不会自行提供迁移路径.此外,装饰者甚至没有Babel正式支持(-legacy是有原因的).当他们配置稍微错误时,人们会责怪React.

你也可以考虑一下 create-react-app-mobx

相关讨论:

  • 另请参阅没有装饰器的MobX示例:https://github.com/facebookincubator/create-react-app/issues/214#issuecomment-236151343 (3认同)
  • 创建了一个小型存储库,演示如何在没有装饰器的情况下将MobX添加到create-react-app:https://github.com/mobxjs/create-react-app-mobx (2认同)