在用create-react-app新建項目後,運行eject命令,可看到各項配置。css
1.yarn add babel-plugin-import
2.package.json文件的babel配置項中,添加react
["import",{"libraryName": "antd","libraryDirectory": "es","style": "css"}]
1.yarn add @babel/plugin-proposal-decorators --dev
2.package.json文件的babel配置項中,添加git
["@babel/plugin-proposal-decorators",{"legacy": true}]
legacy設爲true,表示使用stage 1階段裝飾器語法和行爲。github
3.package.json文件的eslintConfig配置項中,添加json
"parserOptions": {"ecmaFeatures": {"legacyDecorators": true}}
若沒有設置第3步,則decorators的舊寫法,即如下寫法仍然沒法使用。babel
@decorator export class Foo {}
緣由在Please use export @dec class
instead中有提到:是由於目前只有babel-eslint@11支持,而babel-eslint@11目前爲止,還只是一個beta版本。antd
在index.js的底部,增長如下代碼if (module.hot) module.hot.accept();
。不過,這麼簡單的配置,沒法保持state狀態,每次熱更新時state狀態會被重置。要想state狀態能保持,可以使用React-Hot-Loader實現。app
參考自:
追溯 React Hot Loader 的實現
@babel/plugin-proposal-decorators
Please use export @dec class insteadspa