1

在用create-react-app新建项目后,运行eject命令,可看到各项配置。

按需引入ant design组件

1.yarn add babel-plugin-import
2.package.json文件的babel配置项中,添加

["import",{"libraryName": "antd","libraryDirectory": "es","style": "css"}]

图片描述

增加装饰器配置

1.yarn add @babel/plugin-proposal-decorators --dev
2.package.json文件的babel配置项中,添加

["@babel/plugin-proposal-decorators",{"legacy": true}]

clipboard.png

legacy设为true,表示使用stage 1阶段装饰器语法和行为。

3.package.json文件的eslintConfig配置项中,添加

"parserOptions": {"ecmaFeatures": {"legacyDecorators": true}}

clipboard.png

若没有设置第3步,则decorators的旧写法,即以下写法仍然无法使用。

@decorator
export class Foo {}

原因在Please use export @dec class instead中有提到:是因为目前只有babel-eslint@11支持,而babel-eslint@11目前为止,还只是一个beta版本。

clipboard.png

开启HMR

在index.js的底部,增加以下代码if (module.hot) module.hot.accept();。不过,这么简单的配置,无法保持state状态,每次热更新时state状态会被重置。要想state状态能保持,可使用React-Hot-Loader实现。

参考自:
追溯 React Hot Loader 的实现
@babel/plugin-proposal-decorators
Please use export @dec class instead

更新于2019-12-24

windows下运行npx create-react-app my-app命令,报以下错误:
Could not install from "Filesnodejsnode_cache_npx11452" as it does not contain a package.json file.
image.png

原因:
这是npx的一个问题,是因为名称中有空格导致的。
image.png

解决方法:

npm install -g create-react-app 
create-react-app my-app

lijinxieyang
356 声望13 粉丝