首页 > 其他分享 >Vue3 组件篇

Vue3 组件篇

时间:2023-07-26 11:36:41浏览次数:40  
标签:count 插槽 Vue3 使用 组件 官网 defineProps

组件命名

组件的命名一般分为两种

  1. 在单文件组件中,推荐为子组件使用 PascalCase 的标签名,以此来和原生的 HTML 元素作区分。虽然原生 HTML 标签名是不区分大小写的,但 Vue 单文件组件是可以在编译中区分大小写的。我们也可以使用 /> 来关闭一个标签。
  2. 使用 kebab-case 形式并显式地关闭这些组件的标签。
<script setup>
import ButtonCounter from './ButtonCounter.vue'
</script>
<template>
  // 第一种
  <ButtonCounter />
  // 第二种
  <button-counter></button-counter>
</template>

组件参数的传递props

使用<script setup>语法糖时 defineProps defineEmits可以不用引入直接使用
prop 的名字很长,应使用 camelCase 小驼峰形式

// 子组件
<script setup>
// 字符串数组来声明
defineProps(['title'])
// 对象的形式
defineProps({
  title: String,
  likes: Number
})
// Ts使用
defineProps<{
  title?: string
  likes?: number
}>()
// 父组件中传递多个属性时,可以写一个没有名字的空对象,里面写多个参数 下面两者相等
const post = {
  id: 1,
  title: 'My Journey with Vue'
}
<BlogPost v-bind="post" />
<BlogPost :id="post.id" :title="post.title" />
// boolean类型的时候可以省略传递 两者相等
<BlogPost is-published />
<BlogPost :is-published="true" />
</script>

组件官网地址

组件插槽

在父组件中写dom插入子组件内
在父组件中可以获取子组件的数据(抛出),也可以访问到父组件的数据(在当前页面用)。

// 父组件 AlertBox组件的名字
<AlertBox>
  // 传递给子组件的内容 代替slot
  Something bad happened.
</AlertBox>
// 子组件
<template>
  <div class="alert-box">
    // 这里将被代替成写入的dom
    <slot />  // 会被替换为 Something bad happened.
  </div>
</template>

具名插槽 默认情况下插槽的名字是 default 可以省略不写,当多个插槽时,可以使用名字区分

// 定义名字
<slot name="header"></slot>
// 父组件中使用
<BaseLayout>
  <template v-slot:header>
    <!-- header 插槽的内容放这里 -->
  </template>
  // 两者等价,下面是简写
  <template #header>
    <!-- header 插槽的内容放这里 -->
  </template>
</BaseLayout>

组件数据抛出 父组件可以获取子组件的数据

定义两个变量 text count 接收子组件的数据
<slot :text="greetingMessage" :count="1"></slot>
父组件中使用
<MyComponent v-slot="{ text, count }"> 这里使用了解构赋值
  {{ text }} {{ count }}
</MyComponent>
----------------------------------------------------------------
// 定义插槽名字同时传递数据
<slot name="header" message="hello"></slot>
父组件中使用
<MyComponent>
  <template #header="{ message }">
    {{ message }}
  </template>
</MyComponent>
---------------------------------------------------------------
简单使用,复杂理解
对于第一个,我们改造一下
定义一个变量
const item = {
  text:'',
  count:'',
}
定义一个对象变量传递
<slot v-bind="item"></slot>
父组件中使用
<MyComponent v-slot="{ text, count }"> 这里使用了解构赋值
  {{ text }} {{ count }}
</MyComponent>

插槽官网

动态组件

在多个组件间作切换时,被切换掉的组件会被卸载。

<component :is="组件名字"></component>

组件注册

全局注册 局部注册

组件透传

官网地址

依赖注入

官网地址

组件 v-model

官网地址

标签:count,插槽,Vue3,使用,组件,官网,defineProps
From: https://www.cnblogs.com/lixiaotian/p/17549820.html

相关文章

  • vue3之element-plus
    1.安装elementPlus和自动导入插件npmielementPlusnpminstall-Dunplugin-vue-componentsunplugin-auto-import2、配置自动按需导入//引入插件importAutoImportfrom'unplugin-auto-import/vite'importComponentsfrom'unplugin-vue-components/vite'import{......
  • DevExpress WPF Tree List组件,让数据可视化程度更高!(一)
    DevExpressWPFTreeList组件是一个功能齐全、数据感知的TreeView-ListView混合体,可以把数据信息显示为REE、GRID或两者的组合,在数据绑定或非绑定模式下,具有完整的数据编辑支持。DevExpressWPF 拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过......
  • 高性能、高扩展、高稳定:解读 EasyMR 大数据组件自定义可扩展能力
    随着互联网技术的不断发展以及大数据时代的兴起,企业对于数据分析和洞察的需求日益增长。大多数企业都积累了大量的数据,需要从这些数据中快速灵活地提取有价值的信息,以便为用户提供更好的服务或者帮助企业做出更明智的决策。然而在不同的数据场景中,企业往往会选择不同的大数据组件......
  • React组件设计之性能优化篇
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:空山前言由于笔者最近在开发中遇到了一个重复渲染导致子组件状态值丢失的问题,因此关于性能优化做了以下的分析,欢迎大家的交流我们在......
  • 前端Vue仿支付宝自定义可滑动轮播分页宫格菜单组件,可支持九宫格 十二宫格 十五宫格
    背景介绍随着技术的不断发展,传统的开发方式使得系统的复杂度越来越高。在传统开发过程中,一个小小的改动或者一个小功能的增加可能会导致整体逻辑的修改,造成牵一发而动全身的情况。为了解决这个问题,我们采用了组件化的开发模式。通过组件化开发,可以有效地实现单独开发,单独维护,而且......
  • .NET 十个常用的组件库
    前言分享一下本人一直在用的十个组件库:一、AutoMapperAutoMapper是一个对象映射工具,用于简化.NET应用程序中不同类型对象之间的转换和映射。功能:AutoMapper提供了自动化的对象映射功能,可以将一个对象的属性值自动映射到另一个对象的对应属性上,无需手动编写大量的赋值代码。用......
  • Unity UGUI的EventSystem(事件系统)组件的介绍及使用
    UnityUGUI的EventSystem(事件系统)组件的介绍及使用1.什么是EventSystem组件?EventSystem是UnityUGUI中的一个重要组件,用于处理用户输入事件,如点击、拖拽、滚动等。它负责将用户输入事件传递给合适的UI元素,并触发相应的事件回调函数。2.EventSystem组件的工作原理EventSystem......
  • Mentions组件设计
    前言 Mentions组件通常用在评论@某人。Antd是基于textarea实现,功能单一,无法对@xx进行样式设置。功能 基础API熟悉1.Range&Selection在阅读上述Mdn文档后,我们有以下的点需要注意1)如果当前已经有选区,则调用selection.addRange添加新的range会不生效,需要先取消选区sele......
  • 封装一个Redis服务组件
    结构说明 ServiceCollectionExtensions类1usingcom.project.Redis.Common;2usingMicrosoft.Extensions.Configuration;3usingMicrosoft.Extensions.DependencyInjection;4usingSystem;56namespacecom.project.Redis7{8publicstaticclass......
  • Element-ui源码解析(二):最简单的组件Button
    好家伙,为了有足够的能力去开发组件,先研究一下别人的组件开始抄袭模仿我们的行业标杆element-ui 找到Button组件的源码 只有三个文件,看上去非常易读,开搞  其中最重要的部分,自然是button.vue<template><buttonclass="el-button"@click="handl......