在dva腳手架或create-react-app腳手架組合中使用裝飾器


最近做react項目的時候,使用的是create-react-app腳手架搭建的項目,用的ant-design框架,在使用UI框架的Form組件的時候,發現 Form.create 方法是一個典型的裝飾器,於是就改成裝飾器的寫法
 
 
dav框架

1、先安裝包 
yarn add @babel/plugin-proposal-decorators --save

 

2、將.webpackrc  改成.webpackrc.js然后具體配置

 

const config = {};
//用於跨域
config.proxy = {
  "/api": {
    "target": "http://localhost:7001",
    "changeOrigin": true,
    "pathRewrite": {
      "^/api": ""
    }
  }
}
//antd按需加載引入
config.extraBabelPlugins = [
  ["import", {
    "libraryName": "antd",
    "libraryDirectory": "es",
    "style": "css"
  }],
  //裝飾器語法配置
  [
    "@babel/plugin-proposal-decorators",
    {
      "legacy": true
    }
  ]
]



export default config;

在 creat-react-app創建的腳手架配置

1、先安裝包 

yarn add @babel/plugin-proposal-decorators --save

 

2、在項目根目錄下創建.babelrc, config-overrides.js文件

{
    "presets": [
        "react-app"
    ],
    "plugins": [
        [
            "import",
            {
                "libraryName": "antd",
                "libraryDirectory": "es",
                "style": "css" // `style: true` 會加載 less 文件
            }
        ],
        [
            "@babel/plugin-proposal-decorators",
            {
                "legacy": true
            }
        ]
    ]
}

3、刪除package.json的babel配置

// 刪除下面幾行
"babel": {
    "presets": [
      "react-app"
    ]
  },

這樣我們就可以使用裝飾器語法了

 

 

裝飾器 語法使用之前  拿antd的包為例子

// const WrappedNormalLoginForm = Form.create({ name: 'normal_login' })(Login);

// export default WrappedNormalLoginForm;        拋出的是這個改變后的變量  而不是Login這個組件了
 
使用后
 
@Form.create({ name: 'normal_login' })     注意這里不要加分號  放在class上面
 
export default Login

 


免責聲明!

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



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