Vue学习计划-Vue3--核心语法(四)标签的ref属性、props父子通信

1. 标签的ref属性
  1. 作用:用于注册模板引用
  • 用在普通DOM标签上,获取的使DOM节点
  • 用在组件标签上,获取的是组件实例对象

用在子组件上,父组件想要访问子组件内的数据,需要使用defineExpose暴露

  1. 用在普通DOM标签上:
<template><div><h2>哈哈</h2><h2 ref="test">呵呵呵呵</h2><h2>这是第三行了</h2><button @click="showLog">修改高度</button></div>
</template>
<script lang="ts" setup name="Person234">
import { ref } from 'vue'
let test = ref()
function showLog(){console.log(test.value)
}
</script>
  1. 用在组件标签上:
  1. 因为保护机制,父组件访问子组件的,得到的时无法直接使用数据的对象
  2. 要想父组件访问子组件的数据,必须使用defineExpose 导出想要被访问的数据
    defineExpose({a, b, c})
// 子组件内 Person.vue
<template><div><h2>哈哈</h2><h2 ref="test">呵呵呵呵</h2><h2>这是第三行了</h2><button @click="showLog">修改高度</button></div>
</template>
<script lang="ts" setup name="Person234">
import { ref } from 'vue'
let test = ref()
function showLog(){console.log(test.value)
}let a = ref(0)
let b = ref(2)
let c = ref(3)
// 要想父组件访问子组件的数据,必须使用defineExpose 导出想要被访问的数据
defineExpose({a, b, c})
</script>// 父组件内 App.vue
<template><button @click="showChild">显示组件ref</button><Person ref="child"/>
</template>
<script lang="ts" setup name="App">
import Person from './components/Person.vue'
import { ref } from 'vue'
let child = ref()
function showChild(){// 直接打印出子组件实例对象,// 但是因为保护机制,所以想要访问子组件内的数据,还需要在子组件内使用defineExpose导出想要访问的数据console.log(child.value)
}
</script>
2. props父=>子传参
  1. 使用defineProps接收参数
  2. 使用 withDefaults函数将defineProps接收的props参数作为第一个参数包裹起来,并第二个参数里设置默认值
  3. definexxx的函数可以不用引入
  4. defineProps可以直接使用泛型
  • 结合ts来写props案例
  1. ts文件内:(App.vue同级新建文件types\index.ts
export interface PersonInter {id: string,name: string,age: number
}
// export type persons = Array<PersonInter>
export type Persons = PersonInter[]
  1. App.vue文件中
<template><Person a="9" :list="personList"/>
</template>
<script lang="ts" setup name="App">
import Person from './components/Person.vue'
import { reactive } from 'vue'
import { type Persons} from '@/types'let personList = reactive<Persons>([{id: '1', name: '张三', age: 19},{id: '2', name: '李四', age: 20},{id: '3', name: '王五', age: 21},
])<!--let personList:Persons = reactive([{id: '1', name: '张三', age: 19},{id: '2', name: '李四', age: 20},{id: '3', name: '王五', age: 21},
])-->// let personList = reactive([
//   {id: '1', name: '张三', age: 19},
//   {id: '2', name: '李四', age: 20},
//   {id: '3', name: '王五', age: 21},
// ])</script>
  1. Person.vue文件中:
<template><div><ul><li v-for="p in list" :key="p.id">{{ p.name }} - {{ p.age }}</li></ul></div>
</template>
<script lang="ts" setup name="Person234">
import {type Persons} from '@/types'
// define+xxx的方法可以默认不做import导入,可以直接使用
import { defineProps, withDefaults } from 'vue'// 1. 默认接收props数据
// defineProps(['list'])
/*
*   2. 加入ts之后的props
*/
// 2-1. defineProps可以加ts限制传入的值的类型
//  defineProps函数有返回值,返回所接收的props的集合
// let c = defineProps<{list:Persons,a:string}>()
// console.log(c.list, 'cc')// 2-2. 接收传入的值,+限制类型, +必填项, +默认值
// ts的?限制是否必填
// withDefaults设置默认值
withDefaults(defineProps<{list?: Persons}>(), {list: ()=> [{id: 'sdadsa', name: '这是默认de', age: 99}]
})</script>

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

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

相关文章

P1262 间谍网络

1、思路 阅读题目&#xff0c;发现有些间谍可以是被前面的点更新&#xff0c;也就是说&#xff0c;在一开始的时候&#xff0c;把能贿赂的人员从小到达排个序&#xff0c;再使用bfs算法&#xff0c;把他们能到达的人员的贿赂价钱设置为0。 有解的情况&#xff1a; 首先如果有…

【leetcode】力扣热门之反转链表【简单难度】

题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 用例 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 输入&#xff1a;head [] 输出&#xff1a;[…

强化学习的数学原理学习笔记 - 时序差分学习(Temporal Difference)

文章目录 概览&#xff1a;RL方法分类时序差分学习&#xff08;Temporal Difference&#xff0c;TD&#xff09;TD for state valuesBasic TD&#x1f7e1;TD vs. MC &#x1f7e6;Sarsa (TD for action values)Basic Sarsa变体1&#xff1a;Expected Sarsa变体2&#xff1a;n-…

教程:Centos6迁移旧虚拟机文件后的网络配置教程,完美解决虚拟机移动后的网络ip变化问题

博主在工作后,想整整之前大学的虚拟机集群,因此特意从之前的旧电脑把虚拟机文件给拷贝了过来,在导入到vm-workstation,顺便能启动虚拟机后,发现之前的静态ip已经跟现在的宿主机网络不一样。想着重新配置,但觉得太麻烦,故想到了修改网卡的mac地址+网卡重配置方法,完美解…

【已解决】如何用c语言位运算输出浮点数数据

本博文源于笔者正在学习的c语言如何利用位运算输出浮点数数据类型&#xff0c;浮点数在其底部也是用二进制来处理&#xff0c;又考虑到他是低位在前高位在后的原理&#xff0c;因此进行了这样的代码编写 问题浮现 想要用c语言的位运算输出浮点数 问题源码 #include<stdi…

etcd储存安装

目录 etcd介绍: etcd工作原理 选举 复制日志 安全性 etcd工作场景 服务发现 etcd基本术语 etcd安装(centos) 设置&#xff1a;etcd后台运行 etcd 是云原生架构中重要的基础组件&#xff0c;由 CNCF 孵化托管。etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册…

[大厂实践] 重新发明后端子集

子集算法有助于优化服务间连接利用率&#xff0c;降低资源使用。但随机或轮询子集算法在动态拓扑环境中会造成较高的连接扰动。本文介绍了谷歌在解决连接扰动方面所做的思考和实践&#xff0c;并介绍了当前最新的Rocksteadier子集算法。原文: Reinventing Backend Subsetting a…

2023-12-02 青少年软件编程(C语言)等级考试试卷(三级)解析

2023-12-02 青少年软件编程(C语言)等级考试试卷(三级)解析 一、编程题(共5题,共100分)T1. 因子问题 任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。 时间限制:10000 内存限制:65536 输入 包括两个整数N、M。N不超过1,000,000。 输出 输出一个整数…

面试题:怎么给详情页做性能优化的?

文章目录 一、背景二、接口优化方案总结1.批处理2.异步处理3.空间换时间4.预处理5.池化思想6.串行改并行7.索引8.避免大事务9.优化程序结构10.深分页问题11.SQL优化12.锁粒度避免过粗 三、最后 一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xff0c;其中发现…

各种垃圾回收器简介

文章目录 一、Serial垃圾回收器二、Parallel垃圾回收器三、CMS垃圾回收器四、G1垃圾回收器4.1 G1垃圾回收器的步骤4.2 根对象4.3 G1垃圾回收器常用参数 五、ZGC垃圾回收器六、Epsilon垃圾回收器七、垃圾回收算法7.1 标记–清除算法7.2 复制算法7.3 标记–整理算法7.4 分代收集算…

03MyBatis完成CRUD

准备工作 ○ 创建module&#xff08;Maven的普通Java模块&#xff09;&#xff1a;mybatis-002-crud ○ pom.xml ■ 打包方式jar ■ 依赖&#xff1a; ● mybatis依赖 ● mysql驱动依赖 ● junit依赖 ● logback依赖 ○ mybatis-config.xml放在类的根路径下 ○ CarMapper.xml放…

Elasticsearch:Serarch tutorial - 使用 Python 进行搜索 (二)

这个是继上一篇文章 “Elasticsearch&#xff1a;Serarch tutorial - 使用 Python 进行搜索 &#xff08;一&#xff09;” 的续篇。在今天的文章中&#xff0c;我们接着来完成如何进行分页及过滤。 分页 - pagination 应用程序处理大量结果通常是不切实际的。 因此&#xff0…

sqlserver 查日志及死锁记录

方 Exec xp_readerrorlog 0 Go 1.2. 2&#xff09;查询存档编号为n(n Between 0 And 99)的SQL Server日志信息 Exec xp_readerrorlog n 1. 3&#xff09;根据时间范围查询SQL Server日志信息 Exec xp_readerrorlog 1,1,Null,Null,20091126 20:10,20091126 20:40,Asc 1. 4&am…

【ros笔记】urdf文件

urdf文件属于xml文件&#xff0c;他的标签有&#xff1a; <robot name"robot_name"><!-- 看的见摸的着刚体用link --><link name"base_link"><!-- 可视化部分 --><visual><!-- 几何形状 --><geometry><!-- b…

vue-springboot 音乐推荐系统 带歌词的音乐播放器系统设计与实现 7902c

少数民族音乐网站在流畅性&#xff0c;续航能力&#xff0c;等方方面面都有着很大的优势。这就意味着少数民族音乐网站的设计可以比其他系统更为出色的能力&#xff0c;可以更高效的完成最新的音乐信息、音乐资讯、在线交流等功能。 此系统设计主要采用的是JAVA语言来进行开发&…

基于SpringBoot的教学辅助系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

实战Flink Java api消费kafka实时数据落盘HDFS

文章目录 1 需求分析2 实验过程2.1 启动服务程序2.2 启动kafka生产 3 Java API 开发3.1 依赖3.2 代码部分 4 实验验证STEP1STEP2STEP3 5 时间窗口 1 需求分析 在Java api中&#xff0c;使用flink本地模式&#xff0c;消费kafka主题&#xff0c;并直接将数据存入hdfs中。 flin…

java火车查询管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web火车查询管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

深度学习工具-Jupyter Notebook使用

在本地编辑和运行代码 运行命令jupyter notebook。如果浏览器未自动打开&#xff0c;请打开http://localhost:8888 你可以通过单击网页上显示的文件夹来访问notebook文件。它们通常有后缀“.ipynb”。为了简洁起见&#xff0c;我们创建了一个临时的“test.ipynb”文件。单击后…

用python写个根据水库大坝安全监测excel数据自动生成word水库大坝安全监测报告

要实现这个功能&#xff0c;你需要使用Python中的一些库&#xff0c;如pandas用于处理Excel数据&#xff0c;python-docx用于生成Word文档。 以下是一个简单的示例&#xff0c;展示如何从Excel数据中读取数据&#xff0c;并使用python-docx生成Word报告。 首先&#xff0c;确保…