vue3 组合式api中 ref 和$parent 的使用方法

 更新时间:2023年09月02日 11:23:06   作者:A黄俊辉A  
vue3中, 在 组件中添加一个 component ref=“xxx” ,就可以在父组件中得到 子组件的 dom 对象, 以及 虚拟的 dom 对象, 有了虚拟 dom, 我们就可以在父组件中控制子组件的显示了,这篇文章主要介绍了vue3组合式api中ref和$parent的使用,需要的朋友可以参考下

ref 的使用

vue3中, 在 组件中添加一个 component ref=“xxx” ,就可以在父组件中得到 子组件的 dom 对象, 以及 虚拟的 dom 对象, 有了虚拟 dom, 我们就可以在父组件中控制子组件的显示了

ref 的使用方法

在这里插入图片描述

vue3中ref 的特点

以上如果在vue2中,就可以使用 子组件的对象来改变子组件的数据, 和调用子组件的方法了, 但是在vue3 , 这样做还是不行的, 还要做一步操作才可以,也就是要在子组件中, 把父组件想用的方法或属性暴露出去才可以

在这里插入图片描述

以上是父组件通过 ref 来得到子组件的对象, 进而控制子组件中的 属性和方法那么我们通过子组件, 如何去控制父组件的属性和方法呢。那就不止一种方法了emit mitt(bus) 都是可以了, 这里要说的是 和 ref 相类似的 $parent 方法$parent 可以添加在子组件中的事件参数上, 参数名称必须是 $parent,这样在事件的回调方法中就可以,得到父组件的对象, 并控制其中的属性和方法了。同样的道里, 我们要在父组件中, 把要使用的方法或属性暴露出来才可以使用

下面给出一个样例, 父组件中的按钮可以改变子组件中的属性, 并且子组件中的按钮可以改变父组件中的

父组件

<template>
  <div class="baba">
    我是父组件, 我的资产是 {{money}}
    <button @click="borrow100">点击我从儿子那里拿1000元</button>
    <hr/>
    <erzi ref="son"></erzi>   //变量中定义一个和 ref 同名的,就可以得到子组件的对象
  </div>
</template>
<script setup>
  import {ref} from "vue";
  import erzi from "@/views/Home/erzi.vue";
  let money = ref(100000000);
  let son = ref()   //通过 ref 获取到子组件的对象
  const borrow100 = ()=>{   //这里点击了父组件的按钮, 去改变子组件的 money  属性
    money.value+=1000;
    son.value.money -= 1000;
  }
  defineExpose({money})	//这里是通过暴露父组件的 money 属性, 给子组件来使用
</script>

子组件

<template>
  <div class="erzi">
    我是子组件, 我的资产是 {{ money }}
    <button @click="yao20($parent)">点击我们父亲那里拿 20 元</button>
    			//这里子组件的事件使用的 $parent 来做参数,必须使用 $parent 才可以得到父组件的对象
  </div>
</template>
<script setup>
  import {ref} from "vue";
  let money = ref(88888888);
  const yao20 = (p)=>{    //这是子组件中的事件, 触发更改父组件的属性
  							//根据传参可以知道  p 就是父组件的对象
    money.value +=20;
    p.money -=20;
  }
  defineExpose({			//这里是暴露 子组件的 money属性, 因为父组件需要使用,
  							//如果需要的话, 这里也可以暴露方法
    money
  })
</script>

到此这篇关于vue3 组合式api中 ref 和$parent 的使用的文章就介绍到这了,更多相关vue3 ref 和$parent 使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Vue+ts里面this.$store问题

    解决Vue+ts里面this.$store问题

    这篇文章主要介绍了解决Vue+ts里面this.$store问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • vue项目中锚点定位替代方式

    vue项目中锚点定位替代方式

    今天小编就为大家分享一篇vue项目中锚点定位替代方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue中静态文件引用的注意事项及说明

    vue中静态文件引用的注意事项及说明

    这篇文章主要介绍了vue中静态文件引用的注意事项及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • vue实现计算器功能

    vue实现计算器功能

    这篇文章主要为大家详细介绍了vue实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • vue3中的抽离封装方法实现

    vue3中的抽离封装方法实现

    vue3中的任何一个组合式api都可以单独抽离出去在另一个文件,最后只需要回归到setup()中即可,这篇文章主要介绍了vue3的抽离封装方法,需要的朋友可以参考下
    2022-08-08
  • Vue左滑组件slider使用详解

    Vue左滑组件slider使用详解

    这篇文章主要为大家详细介绍了Vue左滑组件slider的使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • vue3.2最新语法使用socket.io实现即时通讯详解

    vue3.2最新语法使用socket.io实现即时通讯详解

    这篇文章主要为大家介绍了vue3.2最新语法使用socket.io实现即时通讯详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 浅谈element中InfiniteScroll按需引入的一点注意事项

    浅谈element中InfiniteScroll按需引入的一点注意事项

    这篇文章主要介绍了浅谈element中InfiniteScroll按需引入的一点注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • vue中datepicker的使用教程实例代码详解

    vue中datepicker的使用教程实例代码详解

    这篇文章主要介绍了vue-datepicker的使用,本文通过实例代码大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Vue2.0 ES6语法降级ES5的操作

    Vue2.0 ES6语法降级ES5的操作

    这篇文章主要介绍了Vue2.0 ES6语法降级ES5的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10

最新评论