vue3.0父传子,父传孙,子传孙,孙传父,孙传子的传值
1.父组件
<template><div class="Parent" ref="Parent"><el-button @click="Responsive">父组件执行方法</el-button><Subcomponents></Subcomponents></div>
</template><script lang="ts">
import { defineComponent, onMounted,reactive,provide,ref} from 'vue';
import Subcomponents from "@/components/Subcomponents.vue"
export default defineComponent({name: 'Parent',components:{Subcomponents},setup(props,ctx){//响应式数据const state = reactive({name:"小陈"})//调用此方法之后,会动态的改变其子孙组件的所有引用值const Responsive=()=>{state.name="小魔"}//子组件执行父组件的方法const ResponsiveSub=()=>{state.name="小锋"console.log("我是子组件访问了父节点")console.log(Parent.value)}//孙组件执行父组件的方法const ResponsiveSun=()=>{state.name="小夏"console.log("我是孙组件访问了父节点")console.log(Parent.value)}//父组件数据传递给孙子组件provide("ParentValue",state)//父组件数据的方法传递给孙子组件,然后孙子组件调用之后直接修改父组件的值provide("ResponsiveSub",ResponsiveSub)provide("ResponsiveSun",ResponsiveSun)onMounted(async () => {})return{state,Responsive,ResponsiveSub,ResponsiveSun,}},props: {},
});
</script>
2.子组件
<template><div class="Subcomponents"><p>{{ParentValue.name}}</p><el-button @click="ResponsiveSub">子组件执行父组件方法</el-button><Suncomponent></Suncomponent></div>
</template><script lang="ts">
import { defineComponent,onMounted,reactive,inject} from 'vue';
import Suncomponent from "@/components/Suncomponent.vue"
export default defineComponent({name: 'Subcomponents',components:{Suncomponent,},setup(props,context){const state = reactive({})const ParentValue = inject("ParentValue")const ResponsiveSub = inject("ResponsiveSub")onMounted(async () => {// props.Deom()})return{ParentValue,ResponsiveSub}},props: {},
});
</script>
3.孙组件
<template><div class="Suncomponent"><p>{{ParentValue.name}}</p><el-button @click="ResponsiveSun">孙组件执行父组件方法</el-button></div>
</template><script lang="ts">
import { defineComponent,onMounted,reactive,inject} from 'vue';export default defineComponent({name: 'Suncomponent',components:{},emits: {Error: val => {console.log(val);return true;}},setup(props){const state = reactive({})const ParentValue = inject("ParentValue")const ResponsiveSun = inject("ResponsiveSun")onMounted(async () => {})return{ParentValue,ResponsiveSun}},props: {},
});
</script>
总结:首先执行父组件的Responsive方法,会出现
然后执行子组件的ResponsiveSub方法,会出现
最后执行孙组件的ResponsiveSun方法,会出现
以上三个方法都是改变了父组件的name的值,并且都是实时响应,对应的子组件里面的值也发生了改变。
最主要的就是使用了vue的provide/inject的属性来实现的.
vue3.0父传子,父传孙,子传孙,孙传父,孙传子的传值相关推荐
- vue3.0 组件使用 引用 传值 父传子 子传父
vue3.0 组件使用 引用 传值 父传子 子传父 组件的创建 组件引入 在html中使用 组件传值 父传子 子接收参数 子传父 父接收参数 组件的创建 1.将所需功能封装在components目录下 ...
- vue3.0 父组件调用子组件方法及获取子组件的值
vue3.0 父组件调用子组件方法及获取子组件的值 通过对比2.0的获取及调用方式这里我们也可以借鉴2.0中的this.$refs去获取3.0和2.0的refs获取的方式有点大同小异,但是思路还是一样 ...
- vue3.0 透传 Attribute
目录 效果一(子组件只有一个根节点,透传生效) 效果二(子组件有多个根节点,透传未生效,且控制台会抛出警告) 效果三(子节点如果不是单根节点的时候,可以通过添加:="$attrs" ...
- el-select change事件传多个参数_第8天 | 14天搞定Vue3.0,事件处理(详细)
在JavaScript语言中,当用户与UI组件交互时,UI组件能够激发一个相应事件.例如,用户按动按钮.滚动文本.移动鼠标或按下按键等,都将产生一个相应的事件. Vue3.0使用v-on指令(缩写为@ ...
- [html] 写出不定宽度的子级div,在相对于固定宽度的父级元素水平居中的布局
[html] 写出不定宽度的子级div,在相对于固定宽度的父级元素水平居中的布局 <div class="father"> <div class="so ...
- vue $emit子组件传出多个参数,如何在父组件中在接收所有参数的同时添加自定义参数...
前言 很多时候用$emit携带参数传出事件,并且又需要在父组件中使用自定义参数时,这时我们就无法接受到子组件传出的参数了. 找到了两种方法可以同时添加自定义参数的方法. 方法一 子组件传出单个参数时: ...
- Retrofit 2.0 超能实践(三),轻松实现多文件/图片上传/Json字符串/表单
通过前两篇姿势的入门 Retrofit 2.0 超能实践,完美支持Https传输 Retrofit2.0 完美同步Cookie实现免登录 本文出自:http://blog.csdn.net/sk719 ...
- 【Vue3.0】Vue3.0简介-指令-过滤器-案例D2.0
[Vue3.0]Vue3.0简介-指令-过滤器-案例 一.Vue3.0简介 1.1.vue3.0与vue2.0对比 vue2.0中绝大多数的API与特性,在vue3.0中同样支持.但是vue3.0中新 ...
- pb调用键盘钩子的例子_搞不动Vue3.0的源码,先做个API调用师也行(新人踩坑初试)...
作为一个刚刚入行工作不久的前端菜鸟,Vue2.x都没整熟练.但看着身边人都在学习Vue3,我也不敢怠慢,毕竟Vue3正式版已经发布两个月了,我还是耐着性子好好的阅读了一下Vue3.0的文档.没有其他大 ...
最新文章
- [优先队列] 洛谷 P2085 最小函数值
- 独家 | R语言中K邻近算法的初学者指南:从菜鸟到大神(附代码&链接)
- Aliyun 挂载硬盘
- MAC OS X10.10+ python3.6 + tensorflow1.3.0
- 【数据结构第一周】最大子列和问题整理
- div+css 和 xhtml+css是一回事么?
- CRC32爆破解密脚本工具(三)
- mybatis复杂查询环境 多对一的处理 按照结果嵌套处理和按照查询嵌套处理
- Codeforces Round #675 (Div. 2)——F主席树待补?
- 微鲸科大讯飞、出门问问合作 TA的语音功能怎么样?
- 百度VS谷歌:优秀与伟大之别
- java.util.timer 定时任务_java.util系列源码解读之Timer定时器
- vue-router路由的使用
- 银行系统开发 经验谈
- 职业技能鉴定 八大工种 广州紧缺工种 培训考证
- 噪声,白噪声,加性噪声和乘性噪声
- iOS 调用TouchID 身份验证
- 爬虫小程序 - 单词量测试
- 微信语音怎么保存 微信语音导出文件夹教程
- (4.3)符号表和符号解析
热门文章
- 切莫让CDN缓存你的动态文件
- 服务器2016系统装完卡logo进不去,win10系统开机卡在logo画面_网站服务器运行维护...
- 【WCN6856】WiFi 5G 接口启动失败问题解决
- PS4 不支持USB存储设备的文件系统 如何解决?
- xp升级到win7傻瓜教程_重装系统软件哪些比较好_windows7教程
- Icon图标 [Java]
- Dell戴尔笔记本电脑G15 5520原装出厂Windows11系统恢复原厂OEM系统
- Microsoft 365 - Teams会议时如何开启美颜功能
- 认识java安全管理器SecurityManager
- C语言转义字符'\'