element-ui tag 组件源码分享

今日简单分享一下 tag 组件的源码实现,主要从以下三个方面来分享:

1、tag 组件页面结构

2、tag 组件属性

3、tag 组件方法

一、tag 组件页面结构

vue2 中使用 jsx 语法小结:

1.1 需要安装 babel-plugin-transform-vue-jsx@vue/babel-helper-vue-jsx-merge-props 依赖

javascript 复制代码
npm install --save-dev babel-plugin-transform-vue-jsx @vue/babel-helper-vue-jsx-merge-props

2、需要配置 babel 文件

javascript 复制代码
{  
  "plugins": [  
    ["transform-vue-jsx", {  
      "functional": false  
    }]  
  ]  
}

3、使用 jsx

javascript 复制代码
export default {  
  name: 'MyComponent',  
  props: {  
    msg: String  
  },  
  render(h) {  
    return (  
      <div>  
        <h1>{this.msg}</h1>  
        <button onClick={() => alert('Hello World!')}>Click Me</button>  
      </div>  
    );  
  }  
}

二、tag 组件方法

2.1 type 属性,类型,类型 string,success/info/warning/danger,无默认值。

2.2 closable 属性,是否可关闭,类型 boolean,默认 false。

组件使用部分:

展示效果:

2.3 disable-transitions 属性,是否禁用渐变动画,类型 boolean,默认 false。

组件使用:

javascript 复制代码
<template>
  <el-tag
    v-for="(item) in tag"
    :key="item.id"
    type="success"
    :disable-transitions="item.id == 0"
    closable
    @close="handleClose(item)"
    >disable-transitions:{{item.id == 0}}</el-tag
  >
</template>

<script>
  export default {
    data() {
      return {
        tag: [
          {
            id: 0,
            title: 'tag 1',
          },
          {
            id: 1,
            title: 'tag 2',
          },
        ],
      };
    },
    methods: {
      handleClose({ id }) {
        const index = this.tag.findIndex((item) => item.id == id);
        this.tag.splice(index, 1);
      },
    },
  };
</script>

展示效果:

2.4 hit 属性,是否有边框描边,类型 boolean,默认 false。

组件使用:

javascript 复制代码
<template>
  <el-tag
    v-for="(item) in tag"
    :key="item.id"
    type="success"
    :hit="item.id==0"
    >hit:{{item.id == 0}}</el-tag
  >
</template>

<script>
  export default {
    data() {
      return {
        tag: [
          {
            id: 0,
            title: 'tag 1',
          },
          {
            id: 1,
            title: 'tag 2',
          },
        ],
      };
    },
  };
</script>

展示效果:

2.5 color 属性,背景色,类型 string,无默认值。

组件使用:

展示效果:

2.6 size 属性,尺寸,类型 string,medium / small / mini,无默认值。

2.7 effect 属性,主题,类型 string,dark / light / plain,默认 light。

三、tag 组件方法

3.1 click 事件,点击 tag 时触发的事件。

3.2 close 事件,关闭 tag 时触发的事件。

相关推荐
老前端的功夫1 分钟前
TypeScript 类型守卫:从编译原理到高级模式
前端·javascript·架构·typescript
未来之窗软件服务12 分钟前
幽冥大陆(七十二) 东方仙盟-在线IP归属地自己封装—东方仙盟练气期
前端·javascript·tcp/ip·仙盟创梦ide·东方仙盟·阿雪技术观
ttod_qzstudio31 分钟前
备忘录之事件监听器绑定陷阱:为什么 .bind(this) 会移除失败?
javascript·typescript·内存泄漏·事件监听
扶我起来还能学_1 小时前
Vue3 proxy 数据响应式的简单实现
前端·javascript·vue
Dragon Wu2 小时前
前端项目架构 项目格式化规范篇
前端·javascript·react.js·前端框架
QQ 31316378902 小时前
文华财经软件指标公式期货买卖信号提示软件
java·前端·javascript
狂龙骄子2 小时前
svg实现蚂蚁线动画
javascript·蚂蚁线动画·蚂蚁线·虚线动画
老华带你飞2 小时前
房屋租赁管理系统|基于java+ vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
俩毛豆3 小时前
【毛豆工具集】【文件】【目录操作】生成沙盒目录
前端·javascript·鸿蒙
霁月的小屋3 小时前
从Vue3与Vite的区别切入:详解Props校验与组件实例
开发语言·前端·javascript·vue.js