vue3 ref()

2023-11-07

通常我们在获取子组件的数据和方法的操作

解决  ref 对子组件进行数据的获取以及方法的触发

不同  需要在子组件 通过defineExpose进行方法的,数据的 暴露

案例 

 父组件



<template>
  <div>
    <el-button @click="setValueOfName()"> 点击我进行数据的测试与更新 </el-button>
    <el-button @click="setDog()"> 点击我进行数据的测试与更新 </el-button>
    姓名:  {{xm}}
    <el-button>4444444</el-button>
     <input v-model="xm">
  <component :is="propvues"    :name=name></component>
  <propvues ref="getSonFunction" @sentValue = getavlue(event) :name=name > 
   <template  v-slot:A = "peoperNmae">
    <bution>{{peoperNmae.peoperNmae}}A</bution>
  </template>
  <template  v-slot:B>
    <bution>BJ</bution>
  </template>
  </propvues>

  <button name="lllll"  @click="getSon()"> jjjkkkkkk </button>
    {{parent}}
  
  </div>
  <!-- <router- -->
  {{injectvalue}}
</template>

<script setup lang="ts">
import axios from './axios/index'
import {ref,provide,onMounted,inject,watch,reactive,computed} from 'vue'
// const  Provide = 
const  injectvalue = inject('names')
const  getSonFunction = ref()
const peoper =  ref<T>("人")
const myx =  ref('张')
const mym = ref("三")
const xm =  ref(computed(()=>{
   return myx.value +  mym.value
}))
const dog =  reactive({
   name:"旺财",
   age:30,
   sex:"男"
})
let parent = "法拉利"
let name = '张三洗头爱飘柔'
import HelloWorld from './components/HelloWorld.vue'
import propvues from './components/props.vue'
//通过自定义事件获取子组件的数据 子传递父亲
const getavlue = function(event){
 console.log("event",event)
}
// dog
// watch(dog,(newValue,oldValue)=> {
//         console.log(newValue)
//         console.log(oldValue)
// },{
//    deep:true,
//    immediate:true,
// }
// )
watch(()=> dog.age ,(newValue,oldValue)=> {
        console.log(newValue)
        console.log(oldValue)
},{
   deep:true,
   immediate:true,
}
)
watch(peoper,(oldvalue,newValue)=> {
     console.log(oldvalue,"oldvalue")
     console.log(newValue,"newValue")
     
})
watch([peoper],(oldvalue,newValue)=> {
     console.log(oldvalue,"oldvalue")
     console.log(newValue,"newValue")
     
})

// 
const setDog = function():void{
    dog.age = 20 
}
// dog

const setValueOfName = function(){
  peoper.value ="ididiidppppppp"
}
const getUserName  = function() {
  axios({
      url:'',
      methods:'post',
      data:{
           name:"张",
           value:'kdlvfl'
      }
  })
}
// 挂载完毕进行获取数据的请求
onMounted(()=>{
    getUserName()
    provide("parent",parent)
})
//通过ref获取子组件的数据 父亲传子
const getSon = function(){
  console.log("开始获取父组件的事件")
  console.log(getSonFunction.value.myserver,">>>>>>>")
      getSonFunction.value.myserver()
}
</script>
<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
  transition: filter 300ms;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

子组件

<template>
  <slot name="A" :peoperNmae=peoperNmae></slot>
  <slot name="B"></slot>
   
    
</template>
<script setup lang="ts">
import {inject,provide} from 'vue'
const $emit = defineEmits(['sentValue'])
const props = defineProps<{
  name:{type:String}
}>()
const peoperNmae  = "子组件的slot数据"
const getInject   =  inject('parent')
const names = 'llllllllhjhhjjjs'
provide('names',names)

const myserver = function(){
     console.log("创建的事件被调用")
}
const sentValue  = function(){
    console.log("已经被触发创建当前事件")
     // 第一个为创建事件的方法,第二个为传递事件的 参数
      $emit('sentValue',)
}
// 父组件获取子组件的数据需要进行抛出才能获取
defineExpose({
       myserver
})
</script>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3 ref() 的相关文章

随机推荐

  • 爱心代码(web前端)陈飞宇李峋同款

    文章目录 前言 一 效果图 二 操作步骤 第一步 第二步 第三步 第四步 第五步 第六步 源码 前言 最近随着电视剧 点燃我温暖你 的火热播出 剧中帅气学霸李洵的炫酷爱心代码也迅速火出了圈 爱心素材也异常火爆 我在这里整理了一份大家有需自取
  • 使用YOLOv5检测大宽高比(细长目标)时无法检测问题的解决方法

    在深度学习的工程中总会遇到许许多多的奇奇怪怪的问题 使人头大 上周五Franpper在使用yolov5 5 0训练时就遇到了这么一个奇怪的问题 在训练过程中labels一直为0 表示没有读进去标签 虽然可以训练 但是是无效训练 因为网络也不
  • 【硬件】对电源模块的梳理(包括DC-DC、LDO等不同芯片应用电路)

    目录 1 DC DC 变换器 ME3116 24V转5V JW5017S 18V转5V CX802 输入电压 4 5 80V 输出电压5V 输出电流1 2A LM2596S ADJ 输入电压3 3 40V 输出电压5V 2 LDO 低压差
  • java中网络编程UDP在线咨询案例(DatagramSocket)

    方法1 单线程 单方向发送接收 发送端 UdpTalkClient java 步骤流程 1 使用DatagramSocket 指定端口 创建发送端 2 准备数据一定转成字节数组 3 封装DatagramSocket包裹 需要指定目的地 4
  • java流程控制语句

    一 顺序结构 顺序结构 按照代码的顺序 自上而下执行 二 选择结构 A if语句 格式 a if 关系表达式 语句体 详细情况 if 关系表达式 如果关系表达式的结果是true 执行大括号中的语句 如果关系表达式的结果是false 就跳过不
  • 北航计算机学院编译技术,北航编译技术在线作业一二三

    北航编译技术在线作业一二三 由会员分享 可在线阅读 更多相关 北航编译技术在线作业一二三 16页珍藏版 请在人人文库网上搜索 1 北航编译技术在线作业一一 单选题 共 14 道试题 共 56 分 1 LR 1 文法都是 C A 无二义性且无
  • CentOS修改默认的root账号名称

    最近云服务器老是提示被爆破 为了安全起见 设置了一下hosts deny 另外还更改了默认的root账号名称 这里记录root账号修改过程 1 修改密码文件中的用户名 vi etc passwd 第一行第一个root字符修改成你想要的用户名
  • 深度学习 多分类roc曲线的绘制

    对于多分类问题 ROC曲线的获取主要有两种方法 假设测试样本个数为m 类别个数为n 在训练完成后 计算出每个测试样本的在各类别下的概率或置信度 得到一个 m n 形状的矩阵P 每一行表示一个测试样本在各类别下概率值 按类别标签排序 相应地
  • 微信企业号接收消息并自动响应

    花了2天时间做了企业号接收消息功能测试 微信官方的文档给了我很大的帮助 但是恰恰卡时间最长的 也是官方文档上的一段有误导性的说明 带我细细道来 首先把微信发送信息到企业号服务器 然后企业号自动响应的过程图示下 网上找的 感觉描述的很好 这里
  • 照片也能跳舞?仅需3秒,这个AI神器让你的照片变3D动画……

    上面的动画好玩么 他原本可不是动画 而是下面这张照片一键生成的 神不神奇 今天介绍的这个工具可以轻松实现这个效果 这个工具叫做LeiaPix Converter 可以帮助用户轻松将普通照片转换为具有运动效果的3D图片 这对于那些想要给照片添
  • 神经网络模型量化

    量化模型 Quantized Model 是一种模型加速 Model Acceleration 方法的总称 包括二值化网络 Binary Network 三值化网络 Ternary Network 深度压缩 Deep Compression
  • 【Java8】Guava——Function

    函数式编程 函数式编程是一种历久弥新的编程范式 比起命令式编程 它更加关注程序的执行结果而不是执行过程 Java 始终是一个面向对象 命令式 的语言 在我们使用函数式编程这种黑魔法之前 需要确认 同样的功能 使用函数式编程来实现 能否在健壮
  • 聊一聊5G定位技术

    从2G到4G 蜂窝网络的定位技术主要有 E CID AoA ToA TDOA等 从2G到4G 蜂窝网络的定位技术主要有 E CID AoA ToA TDOA等 E CID 传统基站分为三个扇区 一个扇区对应一个小区 每扇区通常120度 每个
  • 最优控制(泛函)

    1 一般的泛函就是把函数作为元素来研究的一门学科 泛函分析 举个简单一点的列子 我们以前学的函数是把数字作为基本的元素来研究的 现在更高一个层次 就是元素就是一个函数 比如全体实系数连续函数构成一个集合A 那么这个A中每一个元素就是一个函数
  • MATLAB try catch的使用

    try end try end用于尝试运行一段也许可能出错的代码 try 尝试执行的语句 end 如果E运行出错 跳过并从这里开始运行 try catch end 当程序碰到 a m n 错误后 就会跳转到catch里面的语句 继续执行 有
  • k8s新建pod一直执行creating 的解决方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 参考书籍 kubernetes权威指南第二版 相关内容 确保kubernete集群搭建成功 1 创建一个myweb rc yaml apiVersion v1 kind R
  • QCustomPlot使用技巧

    QCustomPlot使用技巧 一 一 QCustomPlot坐标轴 一个QCustomPlot里有四个坐标轴 其中xAxis yAxis xAxis2和yAxis2分别表示如图所示的4个方向的坐标轴 xAxis2和yAxis2默认隐藏 可
  • vuecli中使用express和mockjs模拟数据

    首先npm安装express和mockjs npm i express npm i mockjs http mockjs com https expressjs com en 5x api html 之后在package json内添加启动
  • 蓝牙之三-StateMachine

    蓝牙和wifi的管理上都使用到了状态机 该状态机属于分层状态机管理消息 一个状态对应于一个
  • vue3 ref()

    通常我们在获取子组件的数据和方法的操作 解决 ref 对子组件进行数据的获取以及方法的触发 不同 需要在子组件 通过defineExpose进行方法的 数据的 暴露 案例 父组件