【vue】父子组件之间通信
使用场景:
- 几个页面有相同的布局
- 在子组件筛选的时候触发父组件中的列表数据
父组件:father.vue
<sun ref="select" @handleselectdata="handleselectdata"></sun>
js
handleselectdata(){ alert(1); },
子组件:sun.vue
<template> <div class="dis-flex"> <el-select class="el-select-box" placeholder="订单类型" v-model="orderSelect.type" @change="handelSelectData" > <el-option :key="item.value" v-for="item in orderTypeTabs" :label="item.label" :value="item.id"> </el-option> </el-select> </div> </template> <script> export default { name: 'select', data() { return{ orderSelect: { type: '', }, orderTypeTabs: [{ id: 1, label: 'XX'},{ id: 2, label: 'XX1'},{ id: 4, label: 'XX2'}] } }, created() { }, methods: { handelSelectData(){ this.$nextTick(() => { this.$emit('handleselectdata'); }); }, } }; </script>
遇到的问题1:
父组件通过ref访问子组件中的数据
const childrenData = this.$refs.select.orderSelect;
报错
解决方案:
this.$nextTick(()=>{ const childrenData = this.$refs.select.orderSelect; })
问题2:子组件触发父组件中的方法,加自定义方法 @handleselectdata="handleselectdata"
子组件中的this.$nextTick可以不加,再次复看的时候,不加也能实现,不晓得为什么
作者:smile.轉角
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我QQ

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通