美文网首页
vue关于 ref 使用的全面总结

vue关于 ref 使用的全面总结

作者: Mr无愧于心 | 来源:发表于2018-05-23 16:15 被阅读0次

ref的作用

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

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

给DOM元素注册引用信息---(引用信息就是元素)

<div id='example'>
  <p ref='mydom'>{{msg}}</p>  
  <p ref='mydom'>{{msg}}</p>
  <div ref='mydiv' v-for="a in arr">{{a}}</div >
</div>
........
    let data={msg:1,arr:[1,2,3]}
    let vm=new Vue({
        el:'#example',
        data:data,
        mounted(){//写在mounted中才能拿到真实dom,或者写在nextTick回调函数中
          //如果dom元素不是通过v-for循环出来的,只能获取一个,通过-for循环出来的可以获取多个
          console.log(this.$refs.mydom)//只能获取一个p
          console.log(this.$refs.mydiv)//通过循环可以获取多个div
        }
    })
   
 // vm.$refs   ---//关联ref属性的DOM元素,可以操作这个关联的元素

给子组件注册引用信息---(引用信息就是组件实例 )

可用于父组件尽情的操作子组件

<div id="app">
    <navbar></navbar>
    <pagefooter></pagefooter>
</div>
.......
Vue.component('navbar',{
    template:'#navbar',
    data:function () {
        return {
            navs:[]
        }
    }
});
Vue.component('pagefooter',{
    template:'#pagefooter',
    data:function () {
        return {
            footer:''
        }
    }
});

new Vue({
    el:'#app',
    mounted:function () {
        //这里怎么直接访问navbar的navs和pagefooter的footer值呢,执行子组件的函数。。。。。
        //ready,操作子组件实例即可
    }
})

接下来应该这样使用ref:

<div id="app">
    <button @click="hide()">haha消失</button>
    <navbar ref="navbar"></navbar>
    <pagefooter ref="pagefooter"></pagefooter>
</div>
<template id='navbar'>
    <div v-show='flag'> haha </div>
</template>
<template id='pagefooter'>
    <div>lala </div>
</template>
.......
Vue.component('navbar',{
        template:'#navbar',
        data:function () {
            return {
                navs:[1,2,3],
                flag:true
            }
        },
        methods:{
            hide(){
                this.flag=false;
            }
    }
    });
    Vue.component('pagefooter',{
        template:'#pagefooter',
        data:function () {
            return {
                footer:'footer'
            }
        }
    });
    new Vue({
        el:'#app',
        mounted:function () {
            console.log(this.$refs.navbar.navs);//拿到navbar组件的navs
            console.log(this.$refs.pagefooter.footer);//拿到pagefooter组件的footer
            this.$refs.pagefooter.$el.style.fontSize='100px'//修改子组件的样式
        },
        methods:{
            hide(){
                this.$refs.navbar.hide();//执行子组件上的方法
            }
        }
    })

相关文章

  • vue关于 ref 使用的全面总结

    ref的作用 ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如...

  • Vue.js中ref ($refs)用法举例总结

    看Vue.js文档中的ref部分,自己总结了下ref的使用方法以便后面查阅。 一、ref使用在外面的组件上 HTM...

  • vue - ref

    vue - ref 说明 ref 是英文单词 reference,代表引用. 在 vue 中, ref 的使用分四...

  • Vue3 Ref 与 Reactive的区别

    Vue3 在组件中使用ref()或reactive()都可以创建响应式数据 Vue2 中操作 Vue3 ref r...

  • Vue3.x ref属性

    获取DOM或者组件实例可以使用ref属性,写法和vue2.0需要区分开。 vue2.0的方式操作ref----数组...

  • 13-Vue特殊属性-ref

    一、Vue特殊特性 Vue的特殊属性主要有:key、ref、is、slot,ref是Vue特殊属性之一 ref:被...

  • 何时使用ref?何时使用reactive?

    一般情况下vue3有两种定义模板数据的方式ref和reactive,但是何时使用ref?何时使用reactive?...

  • vue组件的使用模式

    最近使用vue的过程中,发现关于vue组件使用的问题,现根据我自己的理解,总结一下vue组件的使用模式:(1)多例...

  • vue中的ref在遍历中调用子组件方法报错

    vue中的ref在遍历中调用子组件方法报错,如下 是因为当 ref 和 v-for 一起使用的时候,得到的 ref...

  • Vue的ref的使用

    一.什么是ref ? ref用来辅助我们获取DOM元素或组件的引用实例对象,每个vue的组件实例上,都包含一个re...

网友评论

      本文标题:vue关于 ref 使用的全面总结

      本文链接:https://www.haomeiwen.com/subject/vrbrjftx.html