vue3如何使用ref獲取元素
vue3使用ref獲取元素
在vue2.x中,可以通過給元素添加ref='xxx'屬性,然后在代碼中通過this.$refs.xxx獲取到對應的元素
然而在vue3中時沒有$refs這個東西的,因此vue3中通過ref屬性獲取元素就不能按照vue2的方式來獲取
vue3需要借助生命周期方法,原因很簡單,在setup執(zhí)行時,template中的元素還沒掛載到頁面上,所以必須在mounted之后才能獲取到元素。
<template> <div ref='box'>I am DIV</div> </template> <script> import {ref,onMounted} export default{ setup(){ let box = ref(null); onMounted(()=>{ console.log(box.value) }); return {box} } } </script>
vue3中ref的理解
1.什么是ref?
ref和reactive一樣,也是用來實現(xiàn)響應式數(shù)據(jù)的方法
由于reactive必須傳遞一個對象,所以在實際開發(fā)中如果只是想讓某個變量實現(xiàn)響應式的時候回非常麻煩
所以Vue3提供了ref方法實現(xiàn)簡單值得監(jiān)聽
2.ref本質
ref底層其實還是reactive,所以當運行時系統(tǒng)會自動根據(jù)傳入的ref轉換成reactive.
3.ref注意點
在vue中使用ref的值不用通過value獲取
在js中使用ref的值必須通過value獲取
4.ref獲取元素
在vue2中我們可以通過給元素添加ref=‘xxx’,然后在代碼中通過refs.xxx的方式來獲取元素,在vue3中也可以通過ref來獲取元素.
但不是像以下這種熟悉的方式,因為在vue3中沒有$和refs這些東西.
錯誤示范
正確寫法
<template> ? <div> ? ? <div ref="box">我是div</div> ? </div> </template>
<script> import { ref,onMounted } from "vue"; export default { ? setup() { ? ? let box = ref(null); //本質是reactive({value:null}) ? ? // 需要在生命周期獲取 ? ? onMounted(()=>{ ? ? ? // 當界面掛載出來后就會自動執(zhí)行 ? ? ? console.log(box.value); ? ? }) ? ? //接受的是null,原因是setup執(zhí)行時機比mounted早,dom還沒形成 ? ? console.log(box.value); ? ? return { box }; ? }, }; </script>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
VUEX 數(shù)據(jù)持久化,刷新后重新獲取的例子
今天小編就為大家分享一篇VUEX 數(shù)據(jù)持久化,刷新后重新獲取的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11vue項目中swiper輪播active圖片實現(xiàn)居中并放大
這篇文章主要介紹了vue項目中swiper輪播active圖片實現(xiàn)居中并放大方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05Vue 動態(tài)組件與 v-once 指令的實現(xiàn)
這篇文章主要介紹了Vue 動態(tài)組件與 v-once 指令的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-02-02