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

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

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

 

二、將.webpackrc  改爲.webpackrc.js而後具體配置css

 

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建立的腳手架配置

一、先安裝包 react

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

 

二、在項目根目錄下建立.babelrc, config-overrides.js文件webpack

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

三、刪除package.json的babel配置web

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

這樣咱們就能夠使用裝飾器語法了json

 

 

裝飾器 語法使用以前  拿antd的包爲例子api

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

// export default WrappedNormalLoginForm;        拋出的是這個改變後的變量  而不是Login這個組件了
 
使用後
 
@Form.create({ name: 'normal_login' })     注意這裏不要加分號  放在class上面
 
export default Login
相關文章
相關標籤/搜索