首页 > 其他分享 >VUE框架组件中通信方式(4)

VUE框架组件中通信方式(4)

时间:2023-06-28 10:56:40浏览次数:46  
标签:VUE 框架 parent money let 组件 import ref

ref-children-parent

ref方法既可以获取真实的DOM节点,还可以获取到子组件的实例VC,

$parent可以在子组件中获取父组件的实例VC,使用方式是在子组件的方法中传入的参数只能是$parent如:<button @click="handler($parent)">点击我爸爸给我10000元</button>

示例代码如下;

//父组件代码
<template>
  <div class="box">
    <h1>我是父亲曹操:{{money}}</h1>
    <button @click="handler">找我的儿子曹植借10元</button>
    <hr>
    <Son ref="son"></Son>
    <hr>
    <Dau></Dau>
  </div>
</template>

<script setup lang="ts">
//ref:可以获取真实的DOM节点,可以获取到子组件实例VC
//$parent:可以在子组件内部获取到父组件的实例
//引入子组件
import Son from './Son.vue'
import Dau from './Daughter.vue'
import {ref} from 'vue';
//父组件钱数
let money = ref(100000000);
//获取子组件的实例
let son = ref();
//父组件内部按钮点击回调
const handler = ()=>{
   money.value+=10;
   //儿子钱数减去10
   son.value.money-=10;
   son.value.fly();
}
//对外暴露
defineExpose({
   money
})
</script>

//========================
//son文件代码:
<template>
  <div class="son">
    <h3>我是子组件:曹植{{money}}</h3>
  </div>
</template>

<script setup lang="ts">
import {ref} from 'vue';
//儿子钱数
let money = ref(666);
const fly = ()=>{
  console.log('我可以飞');
}
//组件内部数据对外关闭的,别人不能访问
//如果想让外部访问需要通过defineExpose方法对外暴露
defineExpose({
  money,
  fly
})
</script>
//=====================
//daughter文件代码
<template>
  <div class="dau">
     <h1>我是闺女曹杰{{money}}</h1>
     <button @click="handler($parent)">点击我爸爸给我10000元</button>
  </div>
</template>

<script setup lang="ts">
import {ref} from 'vue';
//闺女钱数
let money = ref(999999);
//闺女按钮点击回调
const handler = ($parent)=>{
   money.value+=10000;
   $parent.money-=10000;
}
</script>

provide-inject

vue3提供了provide(提供)和inject(注入)方法来,实现隔代组件数据传递。

//祖先组件中使用的代码

//两个参数:第一个参数就是提供的数据key
//第二个参数:祖先组件提供数据
let car = ref("法拉利");
provide("TOKEN", car);

//子孙组件中使用的代码
//注入祖先组件提供数据
//需要参数:即为祖先提供数据的key
let car = inject('TOKEN');

标签:VUE,框架,parent,money,let,组件,import,ref
From: https://www.cnblogs.com/xiaolinye/p/17510796.html

相关文章

  • 前端Vue自定义手机号文本格式化组件手机号码文本转星号
    前端Vue自定义手机号文本格式化组件,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13231效果图如下:cc-format-phone使用方法<!--phone:手机号isStar:是否转星号--><cc-format-phone:phone="":isStar="false"></cc-format-phone>......
  • 前端Vue自定义微信支付弹框dialog alert popup
    前端Vue自定义微信支付弹框dialogalertpopup, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13245效果图如下:实现代码如下:cc-payDialog使用方法<!--:money:支付金额 show:是否显示@cancel:取消 @success:确认支付--><cc-payDia......
  • vue自动将px转换成rem
    1.首先下载lib-flexiblenpminstalllib-flexible--save2.在main.js中引用 lib-flexibleimport'lib-flexible/flexible'3.安装px2rem-loader(将px转换成rem)npminstallpx2rem-loader4.配置px2rem(在build/utils.js中配置px2rem)我这边是根据iphone6的设计图尺寸......
  • DevExpress WPF Scheduler组件,快速构建性能优异的调度管理器!(上)
    无论您在WPF项目中是需要Outlook样式的调度程序,还是需要时间表或议程视图来向最终用户展示信息,DevExpressWPF Scheduler都提供了数十个选项,如集成的日程对话框等,因此用户可以快速构建下一个伟大的调度管理器。DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需......
  • Taurus .Net Core 微服务开源框架:Admin 插件【3】 - 指标统计管理
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【2】-系统环境信息管理本篇继续介绍下一个内容:1、系统指标节点:Metric- API 界面界面图如下:1、简要说明:数据查看:该页面默认呈现API访问次数的统计,由于要显示的数据列有点多,24小时,因此用了全屏显示。同时提供快捷......
  • vue组件-使用Vue.component全局注册组件
    通过components注册的时私有子组件例如:在组件A的components节点下,注册了组件F。则组件F只能用在组件A中;不能被用在组件C中。注册全局组件在vue项目的main.js入口文件中,通过Vue.component()方法,可以注册全局组件。importVuefrom'vue'importAppfrom'./App.vue'//导......
  • vue-组件-使用组件的三个步骤
    组件之间的父子关系使用组件的三个步骤......
  • 第二天,框架学习
    namespace命名空间class类 main函数 程序语句固定写法:完成一句命令书写后,用英文分号结束命名空间——工具包类——工具函数——工具能做的事情//引用工具包,缺少该语句后续则会出现报错usingsystem;//调用控制台打印”内容“,打印信息结束后,自动空一行consol......
  • vue组件-启用less语法以及唯一根节点
    <template><div><divclass="test-box"><h3>这是用户自定义的Test.vue---{{username}}</h3><button@click="changeName">修改用户名</button></div>&l......
  • vue透传 Attributes
    Attributes继承​在此之前,先来弥补一个小知识点,vue3支持多个根节点,vue2不支持,<!--vue2:错误的写法--><template><div></div><div></div></template><!--vue3:正确--><template><div></div><div></......