网站首页 > 博客文章 正文
ref 与 parent/parent / parent/children通信
父组件通过ref向子组件传参并调用子组件方法
在父组件代码中,通过在子组件上标签上设置属性ref,可在this.$ref中获取到子组件对象,以此调用子组件内的变量和方法,触发子组件的变化
<!-- 父组件 -->
<template>
<div class="family">
<div @click="father_methods">
<div>父组件的本地参数:{{father_string}}</div>
<button @click="change_son">ref获取子组件实例并触发其函数</button>
</div>
<!-- 子组件 -->
<Son ref="child1"></Son>
<!-- 子组件 -->
</div>
</template>
<script>
import Son from "./Son";
export default {
name: "HelloWorld",
data () {
return {
father_string: "father_string",
};
},
components: {
Son,
},
methods: {
father_methods (str) {
this.father_string = str
},
change_son () {
this.$refs.child1.son_methods('changed_from_father')
}
},
mounted () {
console.log();
}
};
</script>
复制代码
<!-- 子组件 -->
<template>
<div>
<div>子组件的本地参数{{son_string}}</div>
</div>
</template>
<script>
export default {
name: "Son",
data () {
return {
son_string: "son_string"
}
},
methods: {
/* 这个方法到时候供父组件调用 */
son_methods (str) {
this.son_string = str
}
}
};
</script>
</script>
复制代码
简单实例效果如下
点击父组件的button,触发change_son,触发子组件的方法son_methods并且传递传递参数给子组件,如图子组件的参数改变
Vue2中,在父组件中通过this.children和this.children和this.children和this.ref调用的效果没有太大差别
值得注意的是Vue3移除了this中的$children属性
我们来看看子组件中调用parent的效果,在子组件mounted周期中查看parent的效果,在子组件mounted周期中查看parent的效果,在子组件mounted周期中查看parent
parent
<script>
export default {
name: "Son",
data () {
return {
son_string: "son_string"
}
},
methods: {
/* 这个方法到时候供父组件调用 */
son_methods (str) {
this.son_string = str
}
},
mounted () {
this.$parent
}
};
</script>
复制代码
后台打印我们可以看到对象里存放着父组件的变量和参数
我们直接在子组件mounted生命中期中调用父组件的方法并且传递参数
mounted () {
this.$parent.father_methods('changed_by_son')
}
图中左侧,父组件的参数确实被子组件修改了
总结
通过ref 与 parent/parent / parent/children 可以简单快捷的拿到父子组件实例并访问,调用其方法和参数,根据实际情况,配合其他通信方法可优雅高效,愉快地开发~
猜你喜欢
- 2024-10-04 Vue3的使用toRef和toRefs(vue torefs)
- 2024-10-04 Vue3教程 5.响应式toRef和toRefs函数
- 2024-10-04 vue3的readonly、shallowReadonly、shallowReactive、shallowRef
- 2024-10-04 全网首发:Vue3.5 源码 useTemplateRef #vue
- 2024-10-04 一起学习vue3Ts-ref全家桶(vue3.0全家桶最全入门指南)
- 2024-10-04 Vue语法之ref reactive对比及使用场景
- 2024-10-04 吃瓜!前端人因 Vue3 的 Ref 语法糖提案打起来了
- 2024-10-04 终于搞懂了!原来vue3中template使用ref无需.value是因为这个
- 2024-10-04 vue通过ref实现子父通信(vue父子组件如何通信)
- 2024-10-04 [Vue 3] 为什么需要同时使用Ref和Reactive
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)