zoukankan      html  css  js  c++  java
  • Vue中 ref、$refs区别与使用

     

     

    定义2个组件:

    子组件ChildrenSubRef.vue:

     1 <template>
     2   <div>
     3     
     4   </div>
     5 </template>
     6 
     7 <script>
     8 export default {
     9   name: "ChildrenSubRef",
    10   data() {
    11     return {
    12       data1: {
    13         a: 111,
    14         b: 222
    15       },
    16       data2: {
    17         c: 333,
    18         d: 444
    19       }
    20     }
    21   },
    22   methods: {
    23     getSub1() {
    24       return this.$data
    25     },
    26     getSub2() {
    27       console.log('执行子组件方法 getSub2')
    28     }
    29   }
    30 }
    31 </script>

    父组件ParentDemoRefs.vue:

     1 <template>
     2   <div>
     3     <h2 @click="getRefB">getRefB</h2>
     4     <h2 @click="getRefB_func">getRefB_func</h2>
     5     <h2 @click="getRefB_Data">getRefB_Data</h2>
     6     <div ref="refA">hello</div>
     7     <ChildrenSubRef ref="refB"/>
     8   </div>
     9 </template>
    10 
    11 <script>
    12 import ChildrenSubRef from "@/components/ChildrenSubRef.vue";
    13 
    14 export default {
    15   name: "ParentDemoRefs",
    16   components: {
    17     ChildrenSubRef
    18   },
    19   methods: {
    20 
    21     getRefB() {
    22       console.log(this.$refs.refB)
    23     },
    24     getRefB_func() {
    25       this.$refs.refB.getSub2()
    26     },
    27     getRefB_Data() {
    28       console.log(this.$refs.refB.getSub1())
    29     }
    30   }
    31 };
    32 </script>

    ref:

    我们可以给任意dom或组件附加上ref属性

    像这样,只需要在标签上机上属性ref即可,名字可DIY

    1 <div ref="refA">hello</div>
    2 <ChildrenSubRef ref="refB"/>

    $refs:

    上面定义的一个或多个含有ref属性的dom元素或组件,在当前组件实例化后会将它们写入组件实例的属性$refs,$refs是一个集合,

    页面有一个ref就有一个元素在里面,而实际上$refs里的每个ref都指向它的实例

    访问this.$refs.refA 就可以访问到这个refA所在的dom:

    <div>hello</div>

    访问this.$refs.refB 就可以访问到这个refB所在的Vue组件实例:

      

    在父组件能拿到子组件的实例,就像在子组件中访问子组件实例一样,那就明白ref能干嘛了

    可以在父组件访问子组件的数据或方法:

    执行子组件方法:

    this.$refs.refB.getSub1()

    由此看来,$refs提供了访问子组件的一种途径,可以根据实际开发需要使用

  • 相关阅读:
    处理集合_创建Set
    处理集合_通过对象模拟Set
    处理集合_key相等
    处理集合_创建第1个map
    idea实用快捷键
    Typroa 常用快捷键
    关于IDEA无法加载main方法的bug
    TCP通信的实现代码
    用GUI实现java版贪吃蛇小游戏
    UDP实现在线聊天功能
  • 原文地址:https://www.cnblogs.com/rapale/p/14060596.html
Copyright © 2011-2022 走看看