首页 > 其他分享 >【8.0】Vue之ref属性

【8.0】Vue之ref属性

时间:2023-08-06 22:46:36浏览次数:42  
标签:8.0 Vue DOM refs 组件 ref 属性

【ref属性】

ref属性,vue提供的,写在标签上

  • 可以写在普通标签:在vue中使用 this.$refs.名字 拿到dom对象,可以原生操作
  • 可以写在组件上:在vue中使用 this.$refs.名字 拿到[组件]对象,组件属性,方法直接使用即可

【详解】

  • ref属性是Vue.js中提供的一种特殊属性,它可以用于在标签上进行设置。
  • ref属性可以被用在普通HTML标签上,也可以被用在组件标签上。
    • 当ref属性被应用在普通HTML标签上时,我们可以通过在Vue实例中使用$refs来获取对应的DOM对象。
    • 使用this.$refs.名字可以获取到具体的DOM元素,然后可以通过原生的JavaScript方法对该DOM元素进行操作。
    • 例如,可以通过this.$refs.inputElement.value来获取一个input元素的值,或者通过this.$refs.buttonElement.click()来模拟点击一个按钮。
  • 当ref属性被应用在组件标签上时,我们可以通过在Vue实例中使用$refs来获取对应的组件实例对象。
    • 使用this.$refs.名字可以获取到对应的组件对象,然后可以直接使用该组件的属性和方法。
    • 例如,如果组件具有名为childComponent的ref属性,我们可以通过this.$refs.childComponent来访问该组件的属性和方法,如this.$refs.childComponent.propertyNamethis.$refs.childComponent.methodName()
  • 需要注意的是,在Vue.js中,使用ref属性是直接操作DOM或使用组件属性和方法的一种方式。
    • 但是,理想情况下,我们应该避免直接操作DOM,而是通过数据驱动和组件间的通信来处理。
    • 因此,在大多数情况下,使用ref属性来访问DOM元素或组件应该限制在非常特定的场景下,例如在需要进行特殊的DOM操作或与组件进行直接交互的情况下使用。
    • 同时,为了更好地遵循Vue.js的设计原则,尽量在Vue组件中使用数据绑定和事件驱动的方式来实现功能,而不是通过ref属性直接操作DOM。

【案例】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="app">
    <h1>ref属性放在普通标签上</h1>
    <input type="text" v-model="username" ref="myinput">
    <br>
    <img src="http://pic.imeitou.com/uploads/allimg/230331/7-230331110I0.jpg" alt="" height="300px" ref="myimg">


    <h1>ref放在组件上</h1>
    <hr>
    <lqz ref="mylqz"></lqz>
    <hr>

    <button @click="handleClick">点我执行函数</button>

    <br>
    {{username}}

</div>
</body>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            username: ''
        },
        methods: {
            handleClick() {
                console.log(this.$refs)
                // 通过key,取到标签,拿到原生dom,通过dom操作,控制标签
                // this.$refs.myinput.value = 'lqz'
                // this.$refs.myimg.src='https://img2.woyaogexing.com/2021/09/22/3c686eb61fe34696840c478584b73d36!400x400.jpeg'

                // 放在组件上---》现在在父组件中,能拿到子组件对象,对象中的属性和方法直接用即可
                console.log(this.$refs.mylqz)
                // this.$refs.mylqz.title = 'sb'
                // this.username=this.$refs.mylqz.title
                this.$refs.mylqz.handleBack()


            }
        },
        components: {
            lqz: {
                template: `
                  <div>
                  <button @click="handleBack">后退</button>
                  {{ title }}
                  <button>前进</button>
                  </div>`,
                data() {
                    return {
                        title: "首页"
                    }
                },
                methods: {
                    handleBack() {
                        alert('后退了')
                    }
                }
            }
        }

    })
</script>
</html>

标签:8.0,Vue,DOM,refs,组件,ref,属性
From: https://www.cnblogs.com/dream-ze/p/17610257.html

相关文章

  • 【标签属性补充】scoped/ref/props
    【一】scoped新建的组件加了scoped,表示样式只在当前组件生效如果不加,子组件都会使用这个样式<stylescoped></style>scoped是Vue.js中的一个样式作用域限定符,用于将样式限制在当前组件中生效,并不会影响子组件或父组件。使用scoped后,样式只会应用于当前组件的......
  • 【9.0】Vue之项目规范
    【一】vue-cli创建项目【1】引入单页面应用(SPA)单页面应用(SinglePageApplication,简称SPA)是一种Web应用程序的架构方式。传统的多页面应用中,每次导航到新页面都会进行整个页面的重新加载。而SPA只有一个主页面(通常是index.html),页面的内容通过动态渲染来更新,不会重新加载整......
  • 【七】Vue之Vue-cli
    【一】Vue-CLI项目搭建【二】Vue-CLI项目搭建参考步骤Vue-CLI(VueCommandLineInterface)是Vue.js官方提供的一个基于命令行的快速搭建Vue项目的工具。它为我们创建一个Vue项目提供了简单易用的脚手架。【1】安装Node.js:首先需要安装Node.js,因为Vue-CLI是基于Node.js运......
  • 【十】Vue之高级
    【一】ref属性【1】详解被用来给元素或子组件注册引用信息(id的替代者)应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)在Vue中,$refs是一个特殊的属性,用于给元素或子组件注册引用信息。它允许我们在模板或组件中通过引用名称来访问对应的DOM元素或......
  • 【十一】Vue之Vue3
    【一】Vue3的变化【1】性能的提升打包大小减少41%初次渲染快55%,更新渲染快133%内存减少54%【2】源码的升级使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking【3】拥抱TypeScriptVue3可以更好的支持TypeScript【4】新的特性Composition......
  • 【3.0】Vue之语法
    【一】插值语法<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><!--Vue文件--><scriptsrc="https://cdn.bootcdn.net/ajax/libs/vue/2.7.9/vu......
  • 【2.0】Vue之引入
    【一】Vue介绍Vue(读音/vjuː/,类似于view)是一个渐进式JavaScript框架,用于构建用户界面。它与其他大型框架的不同之处在于,Vue的设计理念是可以逐层应用的。Vue的核心库只关注视图层,这使得它不仅易于上手,还方便与第三方库或已有项目进行整合。Vue采用了M-V-VM(Model......
  • 【4.0】Vue之指令系统
    【一】指令系统之文本指令(v-text/v-html)写在标签上,v-开头的标签,称之为指令,每个指令都有特殊用途v-指令名='写原来插值能写的东西'v-指令名='name'#变量v-textv-text指令用于将变量的值渲染到标签的内部。它会将变量的值作为纯文本内容输出到标签之间,而不会将......
  • 【7.0】Vue之组件
    【一】组件介绍【1】什么是组件组件就是:扩展HTML元素,封装可重用的代码,目的是复用例如:有一个轮播图,可以在很多页面中使用,一个轮播有js,css,html组件把js,css,html放到一起,有逻辑,有样式,有html组件是在Web开发中常用的一种技术方式,它可以将页面上的不同部分进行封装,形成......
  • 【6.0】Vue之生命周期函数
    【一】Vue的生命周期【1】详解Vue.js生命周期是指在Vue实例从创建到销毁的过程中,会经历一系列的钩子函数,这些钩子函数可以让我们在不同的阶段插入自定义的代码。Vue的生命周期分为三个主要阶段:创建阶段更新阶段销毁阶段。(1)创建阶段beforeCreate:在实例初始化之后,......