模板引用、组件基础

#### 组件基础

1. 定义和使用简单组件

- ![alt text](./img/image-2.png)

```vue

<!-- 在App.vue里 -->

<script setup>import HelloWorld from './components/HelloWorld.vue'

</script>

<template><HelloWorld></HelloWorld></template>

<!-- 在HelloWorld.vue里 -->

<template><h2>Hello,Vue3!</h2></template>

<script setup></script>

```

2. 传递属性(Props)

```vue

<!-- 在App.vue里 -->

<script setup>

import HelloWorld from './components/HelloWorld.vue'

</script>

<template>

<HelloWorld title="李焕英"></HelloWorld>

<HelloWorld title="生命一号"></HelloWorld>

<HelloWorld title="希望一号"></HelloWorld>

<HelloWorld title="神州20号"></HelloWorld>

</template>

<!-- 在HelloWorld.vue里 -->

<template>

<h2>Hello,{{title}}!</h2>

</template>

<script setup>

defineProps(['title'])

</script>

```

3. 自定义事件

- 注意:【reactive({num1:0,num2:0})】【v-model="obj.num1"】

```vue

<!-- 在App.vue里 -->

<template>

  <ButtonCounter :count="count" @update:count="A"></ButtonCounter>

  <p>父组件中的计数值:{{ count }}</p>

</template>

<script setup>

import ButtonCounter from './components/ButtonCounter.vue'

import {ref} from 'vue'

let count = ref(0)

const A = (newA)=>{

  count.value = newA

}

</script>

<!-- ButtonCounter.vue里 -->

<template>

  <input type="button" :value="'点击次数:'+count" @click="btn">

</template>

<script setup>

  import { defineEmits,defineProps } from 'vue';

  const props = defineProps(['count'])

  const emit = defineEmits(['update:count'])

  const btn = ()=>{

    emit('update:count',props.count + 1)

  }

</script>

```


 

### 笔记

#### 组件基础

1. 单文件组件 :一般用于构建步骤,将组件定义在一个单独的 .vue 文件中

- 在 `ButtonCounter.vue` 文件中:

```vue

<script setup>

  import { ref } from 'vue'

  const count = ref(0)

</script>

<template>

  <button @click="count++">{{ count }}</button>

</template>

```

2. JavaScript 对象定义组件:不使用构建步骤时,组件以包含 Vue 特定选项的 JavaScript 对象来定义

```vue

<template>

  <button @click="count++">{{ count }}</button>

</template>

<script>

import { ref } from 'vue'

export default {

  setup() {

    const count = ref(0)

    return { count }

  }

}

</script>

```

#### 传递 props

1. 概念:Props 是一种特别的 attributes,用于向组件中传递数据。例如,构建博客时,向博客文章组件传递标题和内容等数据就会使用到 props。

- 在组件中需要先声明 props。使用 `<script setup>` 时,可通过 `defineProps` 宏来声明

  - 在 `ButtonCounter.vue` 文件中:

  ```vue

  <script setup>

    defineProps(['title'])

  </script>

  <template>

    <h4>{{ title }}</h4>

  </template>

  ```

- 若未使用 `<script setup>`,则需以 `props` 选项的方式声明,`props` 对象会作为 `setup()` 函数的第一个参数被传入。

```js

    export default {

  props: ['title'],

  setup(props) {

    console.log(props.title)

  }

}

```

2. 传递 props** :在使用组件时,以自定义 attribute 的形式传递数据给组件。`<BlogPost title="My journey with Vue" />`


 

#### 监听事件

1. 场景:有时子组件需要与父组件进行交互。在博客文章组件中实现点击按钮放大文字的功能

- 在子组件中添加按钮,并通过 `$emit` 方法抛出事件。

  - 在 `BlogPost.vue` 文件中:

  ```vue

  <template>

    <div class="blog-post">

      <h4>{{ title }}</h4>

      <button @click="$emit('enlarge-text')">Enlarge text</button>

    </div>

  </template>

  - 父组件监听该事件并做出响应

      <BlogPost  @enlarge-text="postFontSize += 0.1"/>

  ```

2. 事件声明:可通过 `defineEmits` 宏来声明需要抛出的事件,还可以对事件的参数进行验证。

- 在 `BlogPost.vue` 文件中

```vue

<script setup>

  defineProps(['title'])

  defineEmits(['enlarge-text'])

</script>

```

3. 若未使用 `<script setup>`,可通过 `emits` 选项定义组件会抛出的事件,并从 `setup()` 函数的第二个参数,即 `setup` 上下文对象上访问到 `emit` 函数

```js

export default {

  emits: ['enlarge-text'],

  setup(props, ctx) {

    ctx.emit('enlarge-text')

  }

}

```

#### 模板引用

1. 用途:在某些情况下需要直接访问底层 DOM 元素,可使用特殊的 `ref attribute`。

- 获取引用:`useTemplateRef()`

```vue

<script setup>

  import { useTemplateRef, onMounted } from 'vue'

  const input = useTemplateRef('my-input')

  onMounted(() => {

    input.value.focus()

  })

</script>

<template>

  <input ref="my-input" />

</template>`

```


 

### 示例代码

- ButtonCount.vue

```vue

<template>

  {{ title }}-{{ author }}

</template>

<script>

export default {

  props: ['title', 'author'],

  setup(props) {

    console.log(props)

    return { }

  }

}

</script>

```

或使用 `<script setup>`:

```vue

<script setup>

let props = defineProps(['title', 'author'])

console.log(props)

</script>

<template>

  {{ title }}-{{ author }}

</template>

```

2. App.vue

```vue

<script setup>

import { ref } from 'vue'

import ButtonCount from './components/ButtonCount.vue'

function uu() {

  console.log("我是一个自定义的事件,名叫uu")

}

let txt = ref("九九艳阳天")

</script>

<template>

  <input type="text" ref="txtUsername" @keypress.enter="uu">

  <ButtonCount :title="txt"></ButtonCount>

</template>

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/905185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探索 RKNN 模型转换之旅

在人工智能蓬勃发展的当下&#xff0c;边缘计算领域的应用愈发广泛。瑞芯微的 RKNN 技术在这一领域大放异彩&#xff0c;它能让深度学习模型在其芯片平台上高效运行。而在整个应用流程中&#xff0c;模型转换是极为关键的一环&#xff0c;今天就让我们一同深入这个神奇的 RKNN …

iframe嵌套网站的安全机制实现

背景&#xff1a; 公司内部有一套系统A部署在内网&#xff0c;这套系统嵌套了B网站&#xff08;也是内网&#xff09;&#xff0c;只有内网才能访问。现在需要将这个A系统暴露到公网。B系统的安全策略比较低&#xff0c;想快速上线并提高B系统的安全性。 通过 Nginx 代理层 设置…

青少年编程与数学 02-019 Rust 编程基础 08课题、字面量、运算符和表达式

青少年编程与数学 02-019 Rust 编程基础 08课题、字面量、运算符和表达式 一、字面量1. 字面量的分类1.1 整数字面量1.2 浮点数字面量1.3 字符字面量1.4 字符串字面量1.5 布尔字面量1.6 字节数组字面量 2. 字面量的类型推断3. 字面量的用途4. 字面量的限制字面量总结 二、运算符…

危化品安全员职业发展方向的优劣对比

以下是危化品安全员不同职业发展方向的优劣对比&#xff1a; 纵向晋升 优势 职业路径清晰&#xff1a;从危化品安全员逐步晋升为安全主管、安全经理、安全总监等管理职位&#xff0c;层级明确&#xff0c;有较为清晰的上升通道。管理能力提升&#xff1a;随着职位上升&#x…

谈AI/OT 的融合

过去的十几年间&#xff0c;工业界讨论最多的话题之一就是IT/OT 融合&#xff0c;现在&#xff0c;我们不仅要实现IT/OT 的融合&#xff0c;更要面向AI/OT 的融合。看起来不太靠谱&#xff0c;却留给我们无限的想象空间。OT 领域的专家们不要再当“九斤老太”&#xff0c;指责这…

计算机网络核心技术解析:从基础架构到应用实践

计算机网络作为现代信息社会的基石&#xff0c;承载着全球数据交换与资源共享的核心功能。本文将从网络基础架构、核心协议、分层模型到实际应用场景&#xff0c;全面解析计算机网络的核心技术&#xff0c;并结合行业最新趋势&#xff0c;为读者构建系统的知识体系。 一、计算机…

大规模数据并行排序策略(Parallel Sample Sort)

大规模数据并行排序策略 对于上亿条大型记录的并行排序&#xff0c;基于MPI的多节点环境&#xff0c;可以采用以下策略来充分利用内存和网络资源&#xff1a; 推荐算法&#xff1a;样本排序(Sample Sort) 样本排序是大规模并行排序的高效算法&#xff0c;特别适合MPI环境&am…

o.redisson.client.handler.CommandsQueue : Exception occured. Channel

1&#xff0c; 版本 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>2.15.2</version> </dependency>2&#xff0c;问题 2025-05-12 10:46:47.436 ERROR 27780 --- [sson-netty-5-…

Kotlin跨平台Compose Multiplatform实战指南

Kotlin Multiplatform&#xff08;KMP&#xff09;结合 Compose Multiplatform 正在成为跨平台开发的热门选择&#xff0c;它允许开发者用一套代码构建 Android、iOS、桌面&#xff08;Windows/macOS/Linux&#xff09;和 Web 应用。以下是一个实战指南&#xff0c;涵盖核心概念…

【Jenkins简单自动化部署案例:基于Docker和Harbor的自动化部署流程记录】

摘要 本文记录了作者使用Jenkins时搭建的一个简单自动化部署案例&#xff0c;涵盖Jenkins的Docker化安装、Harbor私有仓库配置、Ansible远程部署等核心步骤。通过一个SpringBoot项目 (RuoYi) 的完整流程演示&#xff0c;从代码提交到镜像构建、推送、滚动更新&#xff0c;逐步实…

【Git】GitHub上传图片遇到的问题

一开始我直接在网页上拖拽上传&#xff0c;会说“网页无法正常运作”。 采用git push上去&#xff1a; git clone https://github.com/your-username/your-repo-name.git cd your-repo-name git add . git commit -m "Add large images" git push origin main报错&…

【落羽的落羽 C++】stack和queue、deque、priority_queue、仿函数

文章目录 一、stack和queue1. 概述2. 使用3. 模拟实现 二、deque三、priority_queue1. 概述和使用2. 模拟实现 四、仿函数 一、stack和queue 1. 概述 我们之前学习的vector和list&#xff0c;以及下面要认识的deque&#xff0c;都属于STL的容器&#xff08;containers&#x…

用生活例子通俗理解 Python OOP 四大特性

让我们用最生活化的方式&#xff0c;结合Python代码&#xff0c;来理解面向对象编程的四大特性。 1. 封装&#xff1a;像使用自动售货机 生活比喻&#xff1a; 你只需要投币、按按钮&#xff0c;就能拿到饮料 不需要知道机器内部如何计算找零、如何运送饮料 如果直接打开机…

软件安全(三)实现后门程序

如下是一个经典的后门程序 #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 #include<WinSock2.h> #include<windows.h> #include<iostream> #pragma comment(lib, "ws2_32.lib")int main() {//初始化网络环境WSADATA wsaData;int result WSAStartup…

深入理解高性能网络通信:从内核源码到云原生实践

深入理解高性能网络通信&#xff1a;从内核源码到云原生实践 前言 随着互联网业务规模的高速增长&#xff0c;服务端网络通信能力成为系统性能的核心瓶颈。如何支撑百万级连接、在极限场景下实现低延迟高吞吐&#xff1f;本篇博客将围绕Linux通信机制内核剖析、性能调优实战、…

从实战看软件测试与质量管理:方法、过程与质量的全景解读

作为一名高级软件测试工程师&#xff0c;在过往多个大型系统项目的测试工作中&#xff0c;我深刻体会到&#xff1a;软件测试不仅是产品质量的“守门员”&#xff0c;更是项目成功的“加速器”。今天这篇文章&#xff0c;我将站在实战角度&#xff0c;结合具体案例&#xff0c;…

Megatron系列——流水线并行

内容总结自&#xff1a;bilibili zomi 视频大模型流水线并行 注&#xff1a;这里PipeDream 1F1B对应时PP&#xff0c;Interleaved 1F1B对应的是VPP 1、朴素流水线并行 备注&#xff1a; &#xff08;1&#xff09;红色三个圈都为空泡时间&#xff0c;GPU没有做任何计算 &am…

在Web应用中集成Google AI NLP服务的完整指南:从Dialogflow配置到高并发优化

在当今数字化客服领域,自然语言处理(NLP)技术已成为提升用户体验的关键。Google AI提供了一系列强大的NLP服务,特别是Dialogflow,能够帮助开发者构建智能对话系统。本文将详细介绍如何在Web应用中集成这些服务,解决从模型训练到高并发处理的全套技术挑战。 一、Dialogflow…

Wi-Fi网络角色及功能详解

在 Wi-Fi 网络中&#xff0c;不同的角色和组件协同工作以实现无线通信。以下是 Wi-Fi 中的主要角色及其功能&#xff1a; 1. 基础设施模式&#xff08;Infrastructure Mode&#xff09; 这是最常见的 Wi-Fi 网络架构&#xff0c;包含以下核心角色&#xff1a; 接入点&#xff…

密码学--希尔密码

一、实验目的 1、通过实现简单的古典密码算法&#xff0c;理解密码学的相关概念 2、理解明文、密文、加密密钥、解密密钥、加密算法、解密算法、流密码与分组密码等。 二、实验内容 1、题目内容描述 ①定义分组字符长度 ②随机生成加密密钥&#xff0c;并验证密钥的可行性 …