Vue的Ref属性

作者:高天阳

邮箱:13683265113@163.com

更改历史

* 2018-08-07        高天阳     初始化文档

1 Vue的ref和$refs属性

1.1 简介

ref被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的$refs对象进行注册。 如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例

  • 注意:只要想要在Vue中直接操作DOM元素,就必须用ref属性进行注册

<!-- vm.$refs.p will the DOM node -->
<p ref='p'>hello</p>

<!-- vm.$refs.child will be child comp instance -->
<child-comp ref='child'></child-comp>

示例:

<div class="goods">
    <div class="menu-wrapper" ref="menuWrapper">
        <ul>
            <li v-for="item in goods" class="menu-item">
                <span class="text border-1px">
                    <span v-show="item.type>0" class="icon" v-bind:class="classMain">
                        {{item.name}}
                    </span>
                </span>
            </li>
        </ul>
    </div>
</div>
<div class="foods-wrapper" ref="foodsWrapper">
    <ul>
        <li v-for="item in goods" class="food-list"></li>
    </ul>
</div>

这里为了在create的时候引用DOM元素,先在DOM中使用ref标签进行了注册,然后便可以通过’this.$refs’再跟注册时的名称来引用DOM元素了

2 vue中的ref和$refs

2.1 vm.$refs

  • 类型:Object

  • 只读

  • 详细:

一个对象,持有已注册过的ref特性的所有子组件

2.2 ref

  • 预期:string

ref被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的$refs对象上。如果在普通的 DOM 元素上使用, 引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例:

v-for 用于元素或组件的时候,引用信息将是包含 DOM 节点或组件实例的数组。

关于 ref 注册时间的重要说明:因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在! $refs 也不是响应式的,因此你不应该试图用它在模板中做数据绑定。

3 ref的使用实例

3.1 ref使用在外面的组件上

3.2 ref使用在外面的元素上

3.3 ref使用在里面的元素上---局部注册组件

3.4 ref使用在里面的元素上---全局注册组件

Last updated

Was this helpful?