美文网首页
ES7 装饰器模式的配置

ES7 装饰器模式的配置

作者: 鹤仔z | 来源:发表于2020-03-16 22:09 被阅读0次

装饰器模式简介

在使用 React 框架编程中,我们用高阶组件的时候,使用时往往需要用高阶组件函数包裹当前组件来导出的形式,过于麻烦。装饰器模式则优化了这一点,让我们在编程的过程中节省一点精力。

当我们使用了装饰器模式,React 中的高阶组件就可以这样来使用:

装饰器的使用

装饰器模式的配置

  • 安装依赖

    cnpm i @babel/plugin-proposal-decorators react-scripts @babel/plugin-syntax-jsx @babel/helper-create-regexp-features-plugin -D

  • 修改 package.json 文件中的 babel 配置项

      "babel": {
        "plugins": [
          ["@babel/plugin-proposal-decorators", { "legacy": true}]
        ]
      }
    
  • 在 src 目录下的 config-overrides.js 文件的配置项中增加以下内容

    addDecoratorsLegacy()
    
  • 在根目录下创建 jsconfig.json 文件,配置以下内容

    让编译器对装饰器写法不出警告

    {
        "compilerOptions": {
            "experimentalDecorators": true
        }
    }
    

注意一些踩坑点

  1. 不允许在装饰器和类之间使用export关键字!!!

    比如这样(错误示范):

    import React, { Component } from 'react'
    import layoutHoc from '@layout'
    
    // 错误行为!!!装饰器和类名之间不能使用export!!!
    @layoutHoc
    export default class Home extends Component {
        render() {
            return (
                <div>Home</div>
            )
        }
    }
    

    ↑ 报错:Parsing error: Using the export keyword between a decorator and a class is not allowed. Please use export @dec class instead.

我们可以改成这样子(正确示范):

import React, { Component } from 'react'
import layoutHoc from '@layout'

// 好习惯
@layoutHoc
class Home extends Component {
    render() {
        return (
            <div>Home</div>
        )
    }
}

export default Home;
  1. 装饰器不能用来装饰函数组件!!!

    错误示范:

    import React, { Component } from 'react'
    import layoutHoc from '@layout'
    
    // 装饰符必须加到类的声明前!!!
    @layoutHoc
    function home(){
        return (
            <div>Home</div>
        )
    }
    export default home;
    

    ↑ 报错:Parsing error: Leading decorators must be attached to a class declaration

    所以这时候要用类组件来编写啦

相关文章

  • ES7 装饰器模式的配置

    装饰器模式简介 在使用 React 框架编程中,我们用高阶组件的时候,使用时往往需要用高阶组件函数包裹当前组件来导...

  • 装饰器模式

    装饰器模式 为对象添加新功能 不改变其原有的结构和功能 示例 场景 ES7 装饰器 安装 babel 插件 npm...

  • 装饰器模式

    什么是装饰器模式 ES6/ES7中的装饰器模式简而言之就是对现有类进行一个包装,不通过子类或者改变其内部结构的方式...

  • 为什么我的装饰器没别人的强?

    装饰器(Decorator)是一种设计模式,允许向一个对象添加功能,但是又不改变其内部结构。装饰器只是ES7中提案...

  • 10-TypeScirpt-装饰器-混入

    装饰器 1.什么是装饰器? Decorator 是 ES7 的一个新语法,目前仍处于提案中, 装饰器是一种特殊类型...

  • ts + reflect 编程, 实现 类 spring bo

    es6 提供了 reflect api, es7 的 提供有装饰器。 我们可以尝试用装饰器 + reflect 实...

  • js 装饰器

    es7装饰器特性面向aop编程类库 core-decorators 设计原则 将现有对象和装饰器进行分离,两者独立...

  • 9、结构型模式-装饰器设计模式

    1、如虎添翼的设计模式-装饰器设计模式 简介:讲解-装饰器设计模式介绍和应用场景 装饰器设计模式(Decorato...

  • 装饰器模式

    一、装饰器模式介绍 二、装饰器模式代码实例

  • 1.装饰器模式

    装饰器模式 什么是装饰器模式? 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,...

网友评论

      本文标题:ES7 装饰器模式的配置

      本文链接:https://www.haomeiwen.com/subject/atfaehtx.html