vue-cil组件引用

这段子组件代码是一个使用Vue 3 及其新特性 <script setup> 语法糖、以及 Ant Design Vue 图标库的简单组件示例。它根据传入的prop icon 来决定渲染哪一个图标。

javascript 复制代码
<template>
  <DesktopOutlined v-if="icon==='desktop'"/>
  <HomeOutlined v-else-if="icon==='home'"/>
  <TeamOutlined v-else-if="icon==='team'"/>
  <UserOutlined v-else-if="icon==='user'"/>
  <SettingOutlined v-else-if="icon==='settings'"/>
  <CloudUploadOutlined v-else-if="icon==='cloud'"/>
  <GithubOutlined v-else-if="icon==='git'"/>
  <HistoryOutlined v-else-if="icon==='history'"/>
  <MonitorOutlined v-else-if="icon==='monitor'"/>
  <FileOutlined v-else/>
</template>

<script setup>

const props = defineProps({
  icon: String
})

import {
  CloudUploadOutlined,
  DesktopOutlined,
  FileOutlined,
  GithubOutlined,
  HistoryOutlined,
  HomeOutlined,
  MonitorOutlined,
  SettingOutlined,
  TeamOutlined,
  UserOutlined,
} from '@ant-design/icons-vue';</script>

<style scoped>

</style>

下面是这段代码的逐行解析:

<template>部分:

<template>部分定义了组件的HTML结构。在这个例子中,它通过一系列的条件判断(v-if 和 v-else-if)来确定渲染哪一个Ant Design Vue的图标组件。

  • 根据icon属性的值,这个模板会渲染不同的图标。例如,如果icon的值为"desktop",那么将渲染<DesktopOutlined>组件。
  • 如果所有的条件判断都不满足(即icon的值不是预设的任一值),将作为默认情况渲染<FileOutlined>图标。

<script setup>部分:

<script setup> 是 Vue 3 中引入的一个新增特性,旨在提供更简洁的组合式API(Composition API)使用方式。在这一部分:

  • defineProps函数用于定义组件的props。在这个例子里,定义了一个名为icon的prop,其类型为String。
  • 然后通过import语句从@ant-design/icons-vue包中引入了一系列图标组件。

这意味着,当你使用这个组件并传入不同的icon值时,组件将对应地渲染出不同的图标。例如:

html 复制代码
<!-- 渲染一个'家'的图标 -->
<YourComponent icon="home"/>

<style scoped>部分:

  • 这个部分允许你为这个组件定义样式,并且由于scoped属性的存在,这些样式仅作用于本组件,不会影响到其他组件或全局样式。

使用 <script setup> 语法糖定义的组件可以接收父组件传来的 props。在您提供的例子中,子组件期望接收一个名为 icon 的 prop,其数据类型为 String。以下是如何在父组件中使用这个子组件,并且如何传递 icon prop 的步骤。

定义子组件

首先,定义子组件时,使用了 <script setup> 语法,和 defineProps函数来声明它期望接收的 prop。如您所示:

html 复制代码
<!-- 子组件 MyIconComponent.vue -->
<script setup>
// 通过 defineProps 定义组件接收的 props
const myProps = defineProps({
  icon: String
});
</script>

<template>
  <div>Icon:{{ myProps.icon }}</div>
</template>

在这个例子中,子组件被命名为 MyIconComponent,并且它期望从父组件那里接收一个类型为 String 的 prop,名为 icon。defineProps 返回的对象被赋值给 myProps,这样在模板中就可以通过 myProps.icon 来访问这个值。

使用子组件

在父组件中使用 MyIconComponent 时,需要先导入这个组件,然后就可以把 icon prop 传递给它。下面是如何做的:

  1. 首先,在父组件中导入 MyIconComponent 子组件。
  2. 然后,在父组件的模板中使用 <MyIconComponent> 标签,并通过 :icon 绑定属性传递数据。
html 复制代码
<!-- 父组件 ParentComponent.vue -->
<template>
  <div>
    <!-- 使用子组件,并传递 icon prop -->
    <MyIconComponent :icon="'home'" />
  </div>
</template>

<script setup>
// 导入子组件
import MyIconComponent from './MyIconComponent.vue';
</script>

在这个例子中,父组件通过 :icon="'home'" 给子组件 MyIconComponent 传递了一个字符串 "home" 作为 icon prop 的值。注意,这里的冒号 : 是个简写,表示这是一个 JavaScript 表达式,也就是说我们传递的是 "home" 这个字符串而非 "icon" 这个字符串的变量名。

总结

子组件通过 defineProps 定义期望接收的 props,父组件通过 prop 绑定(如 :icon="value")传递数据给子组件。这样,子组件就能够接收来自父组件的数据,并在其模板或逻辑中使用这些数据了。

相关推荐
程序员Sunday13 小时前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
Setsuna_F_Seiei13 小时前
前端转型 Agent 开发 06 之 Agent Memory 记忆系统(让 Agent 更智能,更懂你)
前端·agent·ai编程
志尊宝14 小时前
Vue3 零基础每日笔记(073):keep-alive 页面缓存实战——列表页返回不丢状态
vue.js·笔记·缓存·#vue #前端 #前端开发·#javascript·#vue.js
zhangzeyuaaa14 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
默_笙15 小时前
🌊 向量库和 ES 都查不出"关系",我只好给奶茶建了一张人脉网
前端·javascript
优选资讯15 小时前
标签打印软件怎么对接 Excel 数据
前端·excel
思无邪6615 小时前
用 AI 做 JS 逆向:从抓包到复现的完整方法论
开发语言·javascript·人工智能
一个风轻云淡16 小时前
GCC 和 GDB命令简单解读
java·linux·前端
u01110267517 小时前
图片处理接口如何统一错误信息 前端提示与后端错误码设计
前端·状态模式
福兮说17 小时前
浏览器里把 iPhone 的 HEIC 转成 JPG:Chrome 解不开、转完大了七成、拍摄时间全丢,六个坑实测
前端·javascript·图像处理·chrome·ios·iphone·heic