前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue父组件调用子组件属性_vue子组件获取父组件实例

vue父组件调用子组件属性_vue子组件获取父组件实例

作者头像
全栈程序员站长
发布于 2022-11-10 10:39:36
发布于 2022-11-10 10:39:36
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

在vue2中,子组件调用父组件,直接使用this.$emit()即可。

但是在vue3中,很显然使用this.$emit() 已经开始报错了,为什么会报错呢?

原因是:在vue3中setup是在声明周期beforeCreate和created前执行,此时vue对象还未创建,因此我们无法使用this。

那么我们在vue3中,子组件该如何调用父组件的函数呢?

方法一:

首先写一个 Child.vue,重点在 setup 函数中引入 context 形参,配合 emit 使用。定义了两个函数,toFatherNum(), toFatherObject() 分别向父组件传递数字和对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
<a-button @click="toFatherNum">子传父数字</a-button>
<a-button @click="toFatherObject">子传父对象</a-button>
</template>
<script lang="ts">
import { 
 defineComponent } from 'vue'
export default defineComponent({ 

name: "Child",
setup(props, context) { 

function toFatherNum() { 

context.emit('eventIsNum', 888)
}
function toFatherObject() { 

context.emit('eventIsObject', { 
 keyName: 'I am value' })
}
return{ 

toFatherNum,
toFatherObject,
}
}
})
</script>
<style scoped>
</style>

然后是 Father.vue,通过事件名称 eventIsNum 和 eventIsObject 接收子组件传递的值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
<Child
@eventIsNum="receiveChildNum"
@eventIsObject="receiveChildObject"
>
</Child>
</template>
<script lang="ts">
import { 
 defineComponent } from 'vue'
import Child from "./Child.vue";
export default defineComponent({ 

name: "Father",
components: { 

Child,
},
setup() { 

function receiveChildNum(e: number) { 

console.log(e, '接收子组件数字');
}
function receiveChildObject(e: object) { 

console.log(e, '接收子组件对象');
}
return { 

receiveChildNum,
receiveChildObject,
}
}
})
</script>
<style scoped>
</style>

方法二: 1.在子组件里引入useContext import { useContext } from "vue"; 2.获取上下文 const ctx = useContext(); 3.在需要调用父组件的地方写上下面的代码进行调用 ctx.emit(‘fatherMethod’); //fatherMethod 是想要调用父组件的一个方法

方法一和二 供大家随意挑选哦!如果大家有更好的方法,欢迎大家评论留言或私信。 希望大家一起进步哟。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月28日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue3 的 7 种和 Vue2 的 12 种组件通信,值得收藏
如果父组件是混合写法,子组件纯 Vue3 写法的话,是接收不到父组件里 data 的属性,只能接收到父组件里 setup 函数里传的属性。
Swift社区
2024/10/10
3060
Vue3 的 7 种和 Vue2 的 12 种组件通信,值得收藏
Vue3.0实现todolist之父子组件之间传值
在child子组件的标签上通过动态绑定属性的方式 :属性名 属性名=一个属性的值 通常是一样的
王小婷
2022/09/30
6050
Vue3.0实现todolist之父子组件之间传值
【初学者笔记】整理的一些Vue3知识点
拒绝标题党,哈哈哈,看完你就基本可以上手搞开发了,本文适合Vue初学者,或者Vue2迁移者,当然还是建议Vue3官网完全过一遍。不适合精通原理,源码的大佬们。
一尾流莺
2022/12/10
2.4K0
【初学者笔记】整理的一些Vue3知识点
关于 Vue3 + setup + ts 使用技巧的总结
ref 一般用于基本的数据类型,比如 string,boolean ,reactive 一般用于对象 ref 的地方其实也是调用的 reactive 实现的。
前端达人
2023/08/31
1.1K0
关于 Vue3 + setup + ts 使用技巧的总结
一口气复习完 Vue3 相关基础知识点
看完你就基本可以上手搞开发了,本文适合Vue初学者,或者Vue2迁移者,当然还是建议Vue3官网完全过一遍。不适合精通原理,源码的大佬们。
前端达人
2021/09/09
2.3K0
一口气复习完 Vue3 相关基础知识点
vue子组件向父组件传值的三种方式_vue子组件修改父组件值
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
1.1K0
vue子组件向父组件传值的三种方式_vue子组件修改父组件值
vue .sync修饰符的使用
在有些情况下,我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源。
吴裕超
2018/08/01
1.1K0
前端系列14集-Vue3-setup
页面浏览量(Page View,PV)和访客数(Unique Visitors,UV)
达达前端
2023/10/08
5200
前端系列14集-Vue3-setup
vue子组件怎么调用父组件的方法「建议收藏」
方法: 1、子组件中通过“this. p a r e n t . e v e n t ” 来 调 用 父 组 件 的 方 法 。 2 、 子 组 件 用 “ parent.event”来调用父组件的方法。 2、子组件用“ parent.event”来调用父组件的方法。2、子组件用“emit”向父组件触发一个事件,父组件监听这个事件即可。 3、父组件把方法传入子组件中,在子组件里直接调用这个方法即可。
全栈程序员站长
2022/11/11
3.6K0
vue子组件调用父组件父页面的方法「建议收藏」
如图:选择城市后,页面重新请求数据!(城市选择是子组件)选择完后不刷新页面,重新调用接口渲染主页面!
全栈程序员站长
2022/11/11
5.4K0
vue子组件调用父组件父页面的方法「建议收藏」
校招前端二面高频vue面试题
在Vue中,对响应式处理利用的是Object.defineProperty对数据进行拦截,而这个方法并不能监听到数组内部变化,数组长度变化,数组的截取变化等,所以需要对这些操作进行hack,让Vue能监听到其中的变化。 那Vue是如何实现让这些数组方法实现元素的实时更新的呢,下面是Vue中对这些方法的封装:
bb_xiaxia1998
2022/12/20
1.5K0
2023前端二面高频vue面试题集锦1
可以看到,组件内部只有一个动态节点,剩余一堆都是静态节点,所以这里很多 diff 和遍历其实都是不需要的,造成性能浪费
bb_xiaxia1998
2023/01/02
1.2K0
Vue3—父子组件传值(子组件使用 emit 传值到父组件)
Vue3中,子组件通过setup函数中的第一个参数值 props 拿到定义的组件参数进行使用。如果要向父组件传参,需要使用setup函数中的第二个参数值 context(组件上下文)中的emit。
全栈程序员站长
2022/08/30
6.3K0
Vue3—父子组件传值(子组件使用 emit 传值到父组件)
前端面试5家公司,被经常问到的vue面试题
在HTML中 slot 元素 ,作为 Web Components 技术套件的一部分,是Web组件内的一个占位符
bb_xiaxia1998
2022/09/22
1.1K0
vue3简易入门剖析
,发音同 “veet”)是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:
张哥编程
2024/12/13
4320
关于Vue3获取当前组件实例的 getCurrentInstance 方法的补充
上一篇文章:快速使用Vue3最新的15个常用API(1W5+字详解,建议收藏),我向大家介绍了关于Vue3常用的15个API的使用详情,帮助大家快速上手Vue3,也很高兴收到大家的支持,同样也有一些人提出了疑问,尤其是对于 如何获取当前组件实例 这个问题的讨论最为激烈,这里我们就对其进行一些补充
@零一
2021/01/29
10K0
Vue3 $emit指南--包含选项API、组合API以及 setup 语法糖
许多Vue模式涉及使用props将数据从父组件传递到子组件。但如果我们需要一个子组件将数据传给它的父组件呢?
前端小智@大迁世界
2022/09/08
4K0
Vue3 $emit指南--包含选项API、组合API以及 setup 语法糖
Vue 子组件调用父组件的属性,方法「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
3K0
Vue传值与状态管理总结
使用prop使得父子组件形成一个单向下行绑定:一般情况下,父级prop的更新会流动到子组件中,但是反过来则不行;
前端老道
2022/03/29
2.2K0
Vue子组件调用父组件的方法及传值「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
1.2K0
相关推荐
Vue3 的 7 种和 Vue2 的 12 种组件通信,值得收藏
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验