vue-cli对element-ui组件进行二次封装的实战记录

下面是针对“vue-cli对element-ui组件进行二次封装的实战记录”的完整攻略:

1. 准备工作

首先,我们需要在vue-cli项目中安装element-ui和vuex这两个依赖:

npm install element-ui --save
npm install vuex --save

接下来,我们需要在main.js中进行全局引入,并使用Vue.use进行插件注册:

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)

2.创建封装组件

我们需要在src/components文件夹中创建一个新的组件:MyDatePicker(示例1)和MyUpload(示例2)。在这两个组件中,我们需要引入element-ui的相关组件,并进行封装。以下是具体代码及说明:

示例1:MyDatePicker组件

<template>
  <el-date-picker
      v-model="value"
      :picker-options="pickerOptions"
      type="date"
      placeholder="请选择日期">
  </el-date-picker>
</template>

<script>
export default {
  name: "MyDatePicker",
  props: {
    value: {
      type: String,
      default: ''
    },
    pickerOptions: {
      type: Object,
      default: () => {
        return {
          disabledDate(date) {
            return date && date < new Date()
          }
        }
      }
    }
  }
}
</script>

说明:

  • 在这个组件中,我们使用了<el-date-picker>组件,并将其作为模板使用。使用v-model,我们可以将父组件传递给该组件的日期值进行双向绑定。
  • pickerOptions选项对象是一个可选属性。如果传递了该属性,则将其应用于<el-date-picker>组件内的选项。在此示例中,我们在pickerOptions中传递了一个禁用日期选项,具体为禁用以前的日期。

示例2:MyUpload组件

<template>
  <el-upload
      class="upload-demo"
      :limit="limit"
      :file-list="fileList"
      :on-exceed="handleExceed"
      :on-success="handleSuccess"
      :on-remove="handleRemove"
      :on-preview="handlePreview"
      :multiple="multiple"
      :show-file-list="showFileList"
      :before-upload="beforeUpload"
      :action="action"
      :headers="headers">
    <el-button size="small" type="primary">点击上传</el-button>
    <div slot="tip" class="el-upload__tip">只能上传xx MB以内的文件</div>
  </el-upload>
</template>

<script>
export default {
  name: 'MyUpload',
  props: {
    url: {
      type: String,
      default: ''
    },
    limit: {
      type: Number,
      default: 3
    },
    fileList: {
      type: Array,
      default: () => []
    },
    multiple: {
      type: Boolean,
      default: false
    },
    showFileList: {
      type: Boolean,
      default: true
    },
    headers: {
      type: Object,
      default: () => {}
    },
    extraData: {
      type: Object,
      default: () => {}
    },
    beforeUpload: {
      type: Function,
      default: () => {}
    }
  },
  data() {
    return {
      action: this.url || '',
    }
  },
  methods: {
    handleExceed(files, fileList) {
      let msg = `最多只能上传${this.limit}个文件`
      this.$message.warning(msg)
    },
    handleSuccess(response, file, fileList) {
      // 上传成功的操作
    },
    handleRemove(file, fileList) {
      // 删除文件的操作
    },
    handlePreview(file) {
      // 预览的操作
    }
  }
}
</script>

说明:

  • 在这个组件中,我们使用了<el-upload>组件,并将其作为模板使用。我们将limit属性用于限制文件上传的最大数量,默认为3,且如果超过限制,将不允许上传文件。我们还为<el-upload>组件内的七个事件定义了一个默认方法,以便我们可以在子组件中对上传的文件进行操作。
  • action属性是一个可选属性,用于指定上传文件的URL地址,默认为空值。通过使用url属性在外部传递URL参数,我们可以灵活地指定上传文件的URL地址。
  • 我们还通过使用<div slot="tip">来查看文件上传的提示。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli对element-ui组件进行二次封装的实战记录 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • python的注释规范

    以下是“Python的注释规范完整攻略”的标准markdown格式文本,其中包含两个示例: Python的注释规范完整攻略 Python是一种易于学习和使用的编程语言,注释是Python编程中非常重要的一部分。好的注释可以提高代码的可读性和可维护性。以下是Python的注释规范的完整攻略。 1. 单行注释 单行注释是指在一行代码后面添加注释。以下是单行注释的…

    other 2023年5月10日
    00
  • 以太坊价格今日行情走势分析_06月27日以太坊最新价格行情美元

    以太坊价格今日行情走势分析 06月27日以太坊最新价格行情美元 以太坊(Ethereum)是一种基于区块链技术的加密货币,它是比特币之后最大的加密货币之一。了解以太坊的价格行情走势对于投资者和交易者来说非常重要。以下是06月27日以太坊的最新价格行情分析。 1. 价格走势分析 以太坊的价格走势可以通过查看历史价格数据和技术指标来进行分析。以下是06月27日以…

    other 2023年7月27日
    00
  • matlab学习——求解微分方程(组)

    Matlab学习——求解微分方程(组) 什么是微分方程组? 微分方程组是指多个未知函数的微分方程组成的方程组,例如: $$\begin{aligned}\frac{dy_1}{dt} &= f_1(t,y_1,y_2,\dots,y_n)\\frac{dy_2}{dt} &= f_2(t,y_1,y_2,\dots,y_n)\\cdots\\…

    其他 2023年3月28日
    00
  • 关于python:tkinter理解mainloop

    关于Python: tkinter理解mainloop 在Python中,Tkinter是一个常用的GUI库,它提供了许多有用的功能和工具,可以帮助开发人员创建GUI应用程序。在Tkinter中,mainloop是一个非常重要的函数,它可以帮助应用程序保持运行状态并响应用户事件。以下是关于Python: tkinter理解mainloop的完整攻略,包括常见…

    other 2023年5月9日
    00
  • iPad平板怎么释放内存? ipad清理垃圾文件的教程

    iPad平板怎么释放内存?iPad清理垃圾文件的教程 释放内存和清理垃圾文件可以帮助提高iPad平板的性能和运行速度。下面是一些方法和步骤,可以帮助您完成这些任务。 方法一:关闭不必要的应用程序 关闭不必要的应用程序可以释放内存并减少系统资源的使用。以下是关闭应用程序的步骤: 在iPad平板上,双击Home按钮或者使用手势切换到最近使用的应用程序界面。 在最…

    other 2023年8月1日
    00
  • JAVA匿名内部类语法分析及实例详解

    JAVA匿名内部类语法分析及实例详解 1. 什么是匿名内部类 在Java中,匿名内部类是指一个没有名称的内部类。它没有类名,直接作为一个表达式使用。匿名内部类通常用于创建实现某个接口或继承某个类的对象。 2. 匿名内部类的语法 匿名内部类主要有以下几个特点: 没有类名,直接作为一个表达式使用。 可以实现接口或者继承类。 可以使用外部类的成员变量和方法。 可以…

    other 2023年6月28日
    00
  • 关于gitmerge:如何撤消git–abort

    以下是关于如何撤消git merge –abort的完整攻略,包括基本知识和两个示例。 基本知识 在Git中,使用git merge命令可以将个或多个分支合并成一个分支。有时候,在合并分支的过程中可能会出现冲突,导致合并失败。此时,可以使用git merge –abort命令来撤消合并操作,回到合并前的状态。 示例说明 以下是两个关于如何撤消git me…

    other 2023年5月7日
    00
  • 怪物猎人世界reshade画质补丁插件使用教程

    怪物猎人世界reshade画质补丁插件使用教程 什么是reshade画质补丁插件? reshade是一个可以提高游戏画质的插件,它可以通过对游戏的渲染管道进行重新处理,改善游戏画面效果,例如增强色彩、对比度、锐度等,使游戏画面更加细腻、清晰、生动。 如何安装reshade画质补丁插件? 首先,你需要下载reshade插件。可以在官网https://resha…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部