React的decorators裝飾器報錯@以及后續問題解決


在初次使用React 的裝飾器時,第一次在項目中使用 @ 會報錯,原因是react默認是不支持裝飾器的,所以才會報錯,所以是需要做一些配置來支持裝飾器。

查了很多資料終於徹底解決,下面我將列出如何給裝飾器打好前戰!

基礎:create-react-app

如果沒有創建react項目后面都是徒勞啦。

1 npx create-react-app demo

創建好項目之后才能進行后續操作。

  • 首先,安裝插件
1 "devDependencies": {
2     "@babel/core": "^7.10.5",
3     "@babel/plugin-proposal-decorators": "^7.10.5",
4     "@babel/preset-env": "^7.10.4",
5     "customize-cra": "^1.0.0",
6     "http-proxy-middleware": "^1.0.5",
7     "react-app-rewired": "^2.1.6"
8   }

 

  • 在 package.json 中修改scripts的運行屬性值
1 "scripts": {
2     "start": "react-app-rewired start",
3     "build": "react-app-rewired build",
4     "test": "react-app-rewired test",
5     "eject": "react-scripts eject"
6   },

 

  • 在項目的根目錄下新建一個config-overrides.js文件(文件名一定不要寫錯,因為會根據這個文件名進行編譯代碼)
 1 // config-overrides.js 內容
 2 const path = require('path')
 3 const {
 4   override,
 5   addDecoratorsLegacy
 6 } = require('customize-cra')
 7 
 8 function resolve(dir) {
 9   return path.join(__dirname, dir)
10 }
11 
12 const customize = () => (config, env) => {
13   config.resolve.alias['@'] = resolve('src')
14   if (env === 'production') {
15     config.externals = {
16       'react': 'React',
17       'react-dom': 'ReactDOM'
18     }
19   }
20 
21   return config
22 }
23 
24 module.exports = override(addDecoratorsLegacy(), customize())

 

基本完成上面這三步就可以正常使用裝飾器了,再也不會報 @的錯誤了。同時Support for the experimental syntax 'decorators-legacy' isn't currently enabled這個錯誤也將消失。


引入裝飾器后續問題

1. 解決函數名飄紅問題

在引入裝飾器之后,雖然不會報錯,但是下面的函數名還是會有飄紅,這時需要進行一些相應的設置。

飄紅問題

解決方案:

打開設置 => 在搜索欄輸入 decorator 找到全稱為 JavaScript › Implicit Project Config: Experimental Decorators 的設置項,將其勾選上,保存即可。

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM