vue3标签中的ref属性&怎样使用$refs获取元素

打印 上一主题 下一主题

主题 1400|帖子 1400|积分 4215

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  • 用在普通DOM标签上,获取的是DOM节点。
  • 用在组件标签上,获取的是组件实例对象。
用在普通DOM标签中

获取dom元素方法一:


  • 在需要获取的元素标签上添加ref属性
  • 创建ref对象,存储ref属性标记的内容
  • 通过ref上的value属性即可获取当前dom元素
    {{ person.name }}
              {{ person.age }}    {{ person.gender }}
获取dom元素方法二:

   getCurrentInstance():获取当前组件实例
  

  • 在需要获取的元素标签上添加ref属性
  • 通过getCurrentInstance解构出proxy
  • 通过proxy.$refs.xxx即可获取当前dom元素
    {{ person.name }}
              {{ person.age }}    {{ person.gender }}
用在组件标签上

   defineExpose作用:向外暴露属性
  1. <!-- 父组件 -->      
  2. <template>      
  3.   <Demo ref="demoRef"></Demo>      
  4. </template>      
  5. <script setup>      
  6. import { ref, onMounted } from "vue";      
  7. import Demo from "./components/Demo.vue";      
  8. let demoRef = ref();      
  9. onMounted(() => {      
  10.   console.log(demoRef.value);  // 访问子组件Demo中的属性
  11. });
  12. </script>      
  13. <!-- 子组件 -->      
  14. <template>      
  15.   <p>{{ person.name }}</p>      
  16.   <div>{{ person.age }}</div>      
  17.   <p>{{ person.gender }}</p>      
  18. </template>      
  19. <script setup>      
  20. import { ref, reactive, computed, getCurrentInstance, onMounted } from "vue";
  21. const person = reactive({  
  22.   name: "neko",
  23.   age: 18,
  24.   gender: "女",
  25. });
  26. let num1 = ref(0);
  27. let num2 = ref(1);
  28. let num3 = ref(2);
  29. <!-- 使用defineExpose将组件中的数据交给外部,这样父组件中的demoRef.value才可以访问到如下数据 -->
  30. defineExpose({ num1, num2, num3, person });
  31. </script>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表