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基于递归解决背包问题详解 背景介绍 背包问题是指在给定容量和一系列物品的情况下,选择一些物品装入背包使其价值最高或重量最轻。该问题的解法应该是在不超过背包容量的情况下,使得背包中物品总价值最大。 例如,有一个容量为10kg的背包,其中有以下三种物品: 物品 重量(kg) 价值(元) 物品1 2 6 物品2 2 3 物品3 6 5 如何选择物品放入…

    other 2023年6月27日
    00
  • 逆转交替合并两个链表的解析与实现

    逆转交替合并两个链表是一种常见的链表操作,该操作的意义在于将两个链表中的节点按照交替顺序进行组合,并将最终的结果链表逆序排列。下面是逆转交替合并两个链表的解析与实现的详细攻略: 解析 假设我们要对以下两个链表进行逆转交替合并: 链表1:1 -> 2 -> 3 -> 4 -> NULL链表2:5 -> 6 -> 7 -&gt…

    other 2023年6月27日
    00
  • 公开个Nday(图)

    “公开个Nday” 是一种安全研究人员使用的策略,目的是披露漏洞细节并且向厂商提供时间限制内修复的机会。以下是一个完整的“公开个Nday”的攻略。 步骤一:发现漏洞 首先,需要通过各种技术手段来寻找漏洞,例如静态分析、数据流分析、模糊测试、代码审计等。一旦发现漏洞,需要尽可能详细地记录其细节,包括漏洞类型、漏洞触发条件、漏洞危害等。 步骤二:验证漏洞 在公开…

    other 2023年6月26日
    00
  • 电脑截图快捷键是什么

    电脑截图快捷键是指在电脑上快速进行截图操作的快捷键。常用的电脑截图快捷键有以下两种: Windows系统下的截图快捷键: 按下“Win+Print Screen”键,可把整个屏幕截图保存到计算机本地的“图片”文件夹下; 按下“Alt+Print Screen”键,可将当前活动窗口截图复制到剪贴板,可在图片编辑软件中使用“Ctrl+V”进行粘贴处理。 MacO…

    其他 2023年4月16日
    00
  • OpenFOAM-圆柱绕流

    OpenFOAM是一款开源的CFD软件,可以用于模拟各种流体问题。本文将详细讲解如何使用OpenFOAM模拟圆柱绕流问题,包括网格生成、求解器设置、后处理等。同时,本文还提供了两个示例说明。 网格生成 在模拟圆柱绕流问题之前,我们需要生成一个合适的网格。在本文中,我们将使用blockMesh工具生成一个简单的网格。 首先,我们需要创建一个名为constant…

    other 2023年5月5日
    00
  • 从零开始搭建一个react项目开发

    以下是从零开始搭建一个React项目的完整攻略: 步骤一:创建React项目 你可以使用create-react-app来创建一个新的React项目。create-react-app是一个友好的命令行工具,它可以创建一个可用的React项目,并自动生成所需的配置文件。 npx create-react-app my-app cd my-app npm sta…

    other 2023年6月27日
    00
  • 洛谷pP2708 硬币翻转

    洛谷pP2708 硬币翻转 问题描述 给定长度为 $n$ 的 $01$ 串,定义一次操作为把一个区间 $[l,r]$ 内的 $0$ 变成 $1$,$1$ 变成 $0$。求最少操作次数使得 $01$ 串变成 $11\cdots 1$ 或者 $00\cdots 0$。 约定: 区间 $[l,r]$ 指 $[l,r]$ 之间的字符,$1\leq l\leq r\l…

    其他 2023年3月28日
    00
  • linux 中如何修改时间 date

    Linux中修改时间date的完整攻略 在Linux中,可以使用date命令来修改系统时间。本文将为您提供一份详细的Linux中修改时间date的完整攻略,包括使用date命令和timedatectl命令的示例说明。 使用date命令 使用date命令可以修改系统时间。可以按照以下步骤进行操作: 打开终端:打开终端窗口。 输入命令:输入以下命令,修改系统时间…

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