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

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni