vue3中,子组件如何向父组件传值

2024-04-15 14:20

本文主要是介绍vue3中,子组件如何向父组件传值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写作灵感

最近在写项目时,有多个页面都需要使用到一个搜索栏。因此,就需要将搜索栏封装成一个组件,我们在其他组件使用搜索组件时,需要将搜索到的内容传入父组件进行展示。此时,就需要用到子组件向父组件传值了。

使用子组件向父组件传递值时,相信遇到最多的便是emit进行传值了。下面我将介绍我用到的两种传值方式:使用setup语法糖和不使用setup语法糖的两种方式。(父组件的书写放在后面

使用setup语法糖

<script lang="ts" setup>
import { reactive, ref,defineEmits } from 'vue'
import API from '@/untils/axios';
import store from '@/store';const emit=defineEmits(["returnResults"])
var select=ref("1")
var content=ref("")
var users=reactive({data:[]
})
function search(){if(select.value=="1"){//选择账号查询API.get(store.state.baseUrl+"user/account",{params:{account:content.value}}).then((res)=>{console.log(res)})} else {//选择姓名查询}emit("returnResults",users.data)
}</script>

首先,先向大家简单了解一下setup语法糖。总所周知,如果不使用setup语法糖,我们需要自己手动返回一些变量与函数。setup则是简化这一过程的,大家可以对比一下我下面不使用setup语法糖时是如何的。

说完了setup语法糖,接下来向大家介绍一下这段代码。在这段代码里面定义了一个emit,其内只包含了一个向父组件传递值的方法。具体的传递值的过程如下:

1、点击子组件的搜索按钮触发搜索事件

2、获得结果,并通过子组件向父组件传值的方法将值传递给父组件

3、父组件在监听到子组件传递了值以后,触发父组件内相应的方法

从上不难看出,在子组件其实触发了两件事情。一个是子组件的搜索功能,另一个便是向父组件传递值的功能,并且是先搜索,搜索到了结果再传递给父组件。

下面介绍一下不使用setup语法糖的写法

不使用setup语法糖

<script lang="ts">
import { defineComponent,reactive, ref } from 'vue'export default defineComponent({emits:["returnResults"],name:"searchComponent",setup(){var select=ref("1")var content=ref("")var users=reactive({data:[]})return{select,users,content}},methods:{search(){this.$emit("returnResults",this.users.data)}}
})
</script>

在这里,我并没有使用setup语法糖。这里和上面的最大区别就是多出了export与return了,这也是setup语法糖最大的好处了,帮助我们简化了这一步骤,使得我们不用一个一个的去返回这些对象。

虽然与使用setup语法糖有些区别,但是核心思想是相同的。只不过是在使用emit时,不能再像上面一样使用defineEmits函数了。而是一个与setup同级的属性来实现

对应的父级组件如何来接收子组件传来的值 

<template><div><searchComponent @returnResults="getResults"/></div>
</template><script lang="ts">
import { defineComponent } from 'vue'
import searchComponent from "@/components/searchComponent.vue"export default defineComponent({components:{searchComponent},setup(){function getResults(e:any){console.log(e)}return{getResults}}
})
</script>

在这里可以看见,父组件要想拿到子组件传递的值,大致的步骤如下:

1、监听子组件传递值的方法

2、在子组件触发传递值的方法时,父组件执行自己的方法处理拿到的值

这其中的@returnResults就是在监听子组件内的传值方法,当监听到时,便执行父组件内的getResults方法。可以在这个方法内部将拿到的值渲染进父组件内部。

总结

子组件一般使用emit就能向父组件传递值了,当然,如果是一些大家都需要用到的值,比如获取当前登入账号的信息,则应当存放在store仓库内更加合理。

这篇关于vue3中,子组件如何向父组件传值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906061

相关文章

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求