当前位置: 首页 > news >正文

组件通信-$refs、$parent

  1. 概述:

    • $refs用于 :父→子。

    • $parent用于:子→父。

  2. 原理如下:
属性说明
$refs值为对象,包含所有被ref属性标识的DOM元素或组件实例。
$parent值为对象,当前组件的父组件实例对象。

child1组件

<template><div class="child1"><h3>子组件1</h3><h4>玩具:{{ toy }}</h4><h4>书本:{{ book }}本</h4><button @click="minusHouse($parent)">干掉父亲的一套房产</button></div>
</template><script setup lang="ts" name="Child1">
import { ref } from 'vue'
const toy = ref('奥特曼')
const book = ref(3)
const minusHouse = (parent) => {parent.house--
}
// 把数据交给外部
defineExpose({ toy, book })
</script><style scoped>
.child1 {background-color: rgb(173, 148, 232);height: 100px;margin: 10px 0;
}
</style>

child2组件:

<template><div class="child2"><h3>子组件2</h3><h4>手机:{{ phone }}</h4><h4>书本:{{ book }}本</h4></div>
</template><script setup lang="ts" name="Child2">
import { ref } from 'vue'
const phone = ref('oppo')
const book = ref(6)
// 把数据交给外部
defineExpose({ phone, book })
</script>
<style scoped>
.child2 {background-color: aquamarine;height: 80px;
}
</style>

father组件:

<template><div class="father"><h3>父组件</h3><h4>房产:{{ house }}</h4><button @click="changeToy()">修改child1的玩具</button><button @click="changePhone()">修改child2的手机</button><button @click="getAllChild($refs)">让所有孩子的书变多</button><Child1 ref="c1" /><Child2 ref="c2" /></div>
</template><script setup lang="ts" name="Father">
import Child1 from './Child1.vue'
import Child2 from './Child2.vue'
import { ref } from 'vue'
const c1 = ref()
const c2 = ref()
const house = ref(6)
// 把数据交给外部
defineExpose({house})
const changeToy = () => {c1.value.toy = '小猪佩奇'
}
const changePhone = () => {c2.value.phone = '华为'
}
const getAllChild = (refs: any) => {console.log(refs)for (let key in refs) {refs[key].book += 3}
}
</script>
<style scoped>
.father {background-color: pink;width: 200px;height: 400px;padding: 20px;
}button {margin: 5px 0;
}
</style>

http://www.xdnf.cn/news/257221.html

相关文章:

  • C++--入门基础
  • MQTT 协议与 HTTP 协议的区别
  • 操作符详解:逗号表达式与下标访问和函数调用操作符
  • 论文阅读笔记——TesserAct: Learning 4D Embodied World Models
  • 【unity游戏开发入门到精通——UGUI】UGUI自动布局组件
  • 数值与字典解决方案第二十六讲:FILTER函数在去除数据的方法
  • 【大模型】多模态推理
  • 传奇各职业/战士/法师/道士戒指爆率及出处产出地/圣战/法神/天尊/虹魔/魔血/麻痹/超负载/求婚/隐身/传送/复活/护身/祈祷/火焰
  • 第Y3周:yolov5s.yaml文件解读
  • C++ set和map
  • 【dify—10】工作流实战——文生图工具
  • 深度学习框架PyTorch——从入门到精通(YouTube系列 - 4)——使用PyTorch构建模型
  • 截图软件、画图软件、左右分屏快捷键
  • 读懂 Vue3 路由:从入门到实战
  • 交错轴啮合原理加工齿轮方法有哪些?
  • Java文件上传
  • 历史数据分析——运输服务
  • 泰迪杯特等奖案例学习资料:基于边缘计算与多模态融合的温室传感器故障自诊断系统设计
  • AI Rack架构高速互连的挑战:损耗设计与信号完整性的设计框架
  • 【二叉树】java源码实现
  • 安装了新版本的python解释器,但在命令行窗口使用`--version`无法查看版本信息
  • C++ 项目中的多语言字符串管理方案(支持自动提示与动态加载)
  • 数字智慧方案5874丨智慧交通收费稽核管理体系的构建与思考(44页PPT)(文末有下载方式)
  • Qt C++简单图形界面与绘图实验
  • 实现水平垂直居中的多种方法
  • 随机微分方程(SDE):股票价格模型、利率模型的构建
  • 【AI面试准备】传统测试工程师Prompt Engineering转型指南
  • 多种尝试解决Pycharm无法粘贴外部文本【本人问题已解决】
  • 第二届平航杯wp
  • 【Linux】线程同步与互斥