iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Vue组件二次封装的实用技巧是什么
  • 647
分享到

Vue组件二次封装的实用技巧是什么

2023-06-30 11:06:21 647人浏览 薄情痞子
摘要

这篇文章主要讲解了“Vue组件二次封装的实用技巧是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue组件二次封装的实用技巧是什么”吧!透传 Attribute我们可以使用一个没有参数的

这篇文章主要讲解了“Vue组件二次封装的实用技巧是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue组件二次封装的实用技巧是什么”吧!

    透传 Attribute

    我们可以使用一个没有参数的 v-bind来实现props,events的透传, 它会将一个对象的所有属性都作为 attribute 应用到目标元素或组件上, 这在官方文档中有着详细介绍。

    <BaseButton v-bind="$attrs"/>

    其中$attrs包含组件可以透传属性的对象, 透传属性包括props,events, class,style,id等。(不包含接收组件显式声明的 props、emits以及slots )

    如下,是一个封装el-input的默认可清空的的组件,由于我们已经在defineProps声明过clearable, 所以此时我们需要显性传递clearable属性

    <template>  <div class="my-input">    {{ label }}    <el-input v-bind="$attrs" :clearable="clearable"></el-input>  </div></template><script setup>defineProps({  label: String,  clearable: {    type: Boolean,    default: true,  },});</script>

    如果我们不希望透传某些属性比如class, 我们可以通过useAttrs来实现

    <template>  <div class="my-input">    {{ label }}    <el-input v-bind="filteredAttrs" :clearable="clearable"></el-input>  </div></template><script setup>import { computed, useAttrs } from 'Vue';defineProps({  label: String,  clearable: {    type: Boolean,    default: true,  },});const attrs = useAttrs();const filteredAttrs = computed(() => {  return { ...attrs, class: undefined };});</script>

    上述封装的组件还有个缺点, 就是我们将无法使用el-input本身提供的slot,下面我们就来实现一个可以透传 slot的组件

    透传 slot

    slot可以通过下面这种方式透传的

    <!-- 在组件中创建新的对应名称的插槽 --><template #slotName><!-- 在插槽内部使用对应名称的插槽 -->    <slot name="slotName" /></template>

    普通slot

    如果透传的slot比较少,我们可以通过在封装组件内部定义并使用插槽<template v-slot:slotName><slot name="slotName" /></template>来透传插槽

    <template #slotName>    <slot name="slotName" /></template>

    动态插槽名

    如果需要透传的slot不固定或者较多,我们可以通过动态插槽名称透传

    <template #[slotName] v-for="(slot, slotName) in $slots" >    <slot :name="slotName" /></template>

    如下是一个透传的slot的el-input组件

    <template>  <div class="my-input">    {{ label }}    <el-input v-bind="$attrs" :clearable="clearable">      <template #[slotName] v-for="(slot, slotName) in $slots">          <slot :name="slotName" />      </template>    </el-input>  </div></template><script setup>defineProps({  label: String,  clearable: {    type: Boolean,    default: true,  },});</script>

    作用域插槽

    如果需要封装组件使用了作用域插槽,我们可以通过<template v-slot:slotName="slotProps"><slot name="slotName" v-bind="slotProps"/></template>来透传作用域插槽插槽。

    <template #[slotName]="slotProps" v-for="(slot, slotName) in $slots" >    <slot :name="slotName" v-bind="slotProps"/></template>

    封装组件存在的问题

    组件实例属性和方法的调用

    封装后的组件我们无法按照之前的情况调用组件实例中的属性和方法,比如BaseButton有focus方法,在封装之前我们可以通过下面这种方式调用

    // 调用BaseButton的组件父组件// <BaseButton ref="button">const button = ref();button.value.focus()

    对于封装后的组件,由于此时button指向我们的MyButton,并不指向BaseButton的实例,所以我们需要在包装的组件中声明并暴露BaseButton事例

    //我们封装的组件// MyButton.Vue// <BaseButton ref="button">const button = ref();

    注意如果我们使用 <script setup>,是没办法访问实例中的属性的,详情参考vuejs.org/api/sfc-scr&hellip;

    此时可以通过defineExpose显式公开ref属性

    // 我们封装的组件// MyButton.Vue// <BaseButton ref="button">const button = ref();defineExpose({  button});

    然后在父组件中我就可以通过实例链式调用封装的组件了

    // <MyButton ref="button">const button = ref();button.value.button.focus()

    感谢各位的阅读,以上就是“Vue组件二次封装的实用技巧是什么”的内容了,经过本文的学习后,相信大家对Vue组件二次封装的实用技巧是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: Vue组件二次封装的实用技巧是什么

    本文链接: https://www.lsjlt.com/news/328445.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Vue组件二次封装的实用技巧是什么
      这篇文章主要讲解了“Vue组件二次封装的实用技巧是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue组件二次封装的实用技巧是什么”吧!透传 Attribute我们可以使用一个没有参数的...
      99+
      2023-06-30
    • Vue组件二次封装的一些实用技巧总结
      目录前言透传 Attribute透传 slot普通slot动态插槽名作用域插槽封装组件存在的问题组件实例属性和方法的调用总结前言 在开发Vue项目我们一般使用第三方UI组件库进行开发...
      99+
      2024-04-02
    • Vue技巧ElementTable二次封装实战示例
      目录前言思考实践filterPane.vue明确目标传入数据结构整理timeSelectelinputelselect开始封装tablePane.vue明确目标传入数据结构...
      99+
      2022-11-16
      Vue Element Table二次封装 Vue Element Table
    • React+Ts实现二次封装组件
      目录前言样式类型扩展功能扩展 继承 修改 拦截前言 在react中相信大家用的最多的组件库就是Antd了,可是往往在公司的实际开发过程中,我们会发现ui给的设计图和组件有着不小的差别...
      99+
      2023-05-17
      React Ts封装组件 React Ts组件
    • Vue中图片上传组件封装-antd的a-upload二次封装的实例
      目录图片上传组件封装-antd的a-upload二次封装api组件封装使用优化图片上传组件封装-antd的a-upload二次封装 a-upload组件 api const pub...
      99+
      2024-04-02
    • Element使用el-table组件二次封装
      目录前言一、安装引入二、封装功能三、样式覆盖四、使用组件前言 在vue开发中使用element-ui的el-table时一般都需要进行封装以便于复用,提高开发效率,减少重复代码,这篇...
      99+
      2024-04-02
    • Element怎么使用el-table组件实现二次封装
      这篇文章主要讲解了“Element怎么使用el-table组件实现二次封装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Element怎么使用el-table组件实现二次封装”吧!一、安装引...
      99+
      2023-07-02
    • vue-cli对element-ui组件进行二次封装的实战记录
      目录为什么要element对进行二次封装?如何对element对进行二次封装?总结为什么要element对进行二次封装? 1.element-ui组件的部分样式不满足当前项目的需求。...
      99+
      2024-04-02
    • vue如何实现axios的二次封装
      这篇文章主要介绍“vue如何实现axios的二次封装”,在日常操作中,相信很多人在vue如何实现axios的二次封装问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何实现axios的二次封装”的疑惑有所...
      99+
      2023-07-04
    • 封装Vue第三方组件的技巧有哪些
      这篇文章主要介绍“封装Vue第三方组件的技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“封装Vue第三方组件的技巧有哪些”文章能帮助大家解决问题。引言在封装第三方组件中,经常会遇到一个问题,...
      99+
      2023-07-02
    • vue二次封装一个高频可复用组件的全过程
      目录前言继承原有组件接口v-model插槽组件更抽象总结前言 在我们的业务里,我们通常会二次封装一些高频业务组件,比如弹框,抽屉,表单等这些业务组件,为什么要二次封装?我们所有人心里...
      99+
      2022-11-13
      vue如何二次封装组件 vue组件封装并复用 vue的组件复用机制
    • Vue如何二次封装axios为插件使用
      这篇文章给大家分享的是有关Vue如何二次封装axios为插件使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vuejs2.0 已经不再维护 vue-resource,vuejs...
      99+
      2024-04-02
    • 基python+selenium的二次封装方法是什么
      本篇内容主要讲解“基python+selenium的二次封装方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基python+selenium的二次封装方法是什么”吧!  首先在根目录下创...
      99+
      2023-06-02
    • elementUI el-table二次封装的方法是什么
      这篇文章主要讲解了“elementUI el-table二次封装的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“elementUI el-table二次封装的方...
      99+
      2023-07-05
    • 关于ElementUI的el-upload组件二次封装的问题
      目录ElementUI的el-upload组件二次封装问题组件使用el-upload组件封装后更好用了组件截图组件代码部分ElementUI的el-upload组件二次封装问题 开发...
      99+
      2024-04-02
    • Vue组件封装怎么实现
      这篇文章主要介绍“Vue组件封装怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue组件封装怎么实现”文章能帮助大家解决问题。一、组件封装的优势复用性:组件封装可以将常用的功能或视图模块抽象...
      99+
      2023-07-05
    • Vue3+Vite+TS实现二次封装element-plus业务组件sfasga
      目录1.结构字符串2.返回tuple元组3.访问Dict字典4.运用库5.在列表中切片/步进 6.用 ranges 1.结构字符串 你会经常需求打印字符串。要是有很多变量,防止下面这...
      99+
      2024-04-02
    • 使用vue组件封装共用的组件
      目录这里提供两种vue封装共用组件的方法方法一方法二vue封装公共组件调用方法这里提供两种vue封装共用组件的方法 方法一 main.js中 import ListItem from...
      99+
      2024-04-02
    • ADO.NET组件技巧是什么
      本篇内容主要讲解“ADO.NET组件技巧是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ADO.NET组件技巧是什么”吧!示例中的代码假定您可以连接到 Microsoft SQL Serve...
      99+
      2023-06-17
    • jsoneditor二次封装实时预览json编辑器组件react版
      目录前言设计思路正文jsoneditor的使用结合react进行二次封装前言 做为一名前端开发人员,掌握vue/react/angular等框架已经是必不可少的技能了,我们都知道,v...
      99+
      2022-11-13
      jsoneditor二次封装json编辑器 jsoneditor 实时预览编辑器
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作