Vue2與Vue3中Ref綁定元素方式
Vue之Ref綁定元素獲取實(shí)例
我們可以通過(guò)給元素綁定ref屬性來(lái)獲取這個(gè)元素的實(shí)例,來(lái)調(diào)用實(shí)例中的某種方法來(lái)實(shí)現(xiàn)某種功能
Vue2實(shí)現(xiàn)
<template>
<!-- 單個(gè)綁定 -->
<HelloWorld ref="HelloRef" />
<!-- 循環(huán)綁定 -->
<div v-for="item in arr" :key="item">
<hello-world ref="HelloArrRef"></hello-world>
</div>
</template>
<script>
import HelloWorld from "./components/HelloWorld.vue";
export default {
name: "App",
components: {
HelloWorld,
},
data() {
return {
count:0
};
},
mounted() {
console.log(this.$refs.HelloRef, "HelloRef");//結(jié)果為單個(gè)對(duì)象
console.log(this.$refs.HelloArrRef, "HelloArrRef");// 結(jié)果為數(shù)組
},
methods: {
},
};
在vue2寫法下,無(wú)論綁定單個(gè)元素或者循環(huán)綁定元素我們可以通過(guò)this.$refs.實(shí)例名稱來(lái)獲取組件實(shí)例
Vue3實(shí)現(xiàn)
vue3中循環(huán)綁定ref是和vue2寫法略有不同,單個(gè)組件綁定寫法是一致的
<template>
<!-- 單個(gè)綁定 -->
<HelloWorld ref="HelloRef" />
<!-- 循環(huán)綁定 -->
<div v-for="item in arr" :key="item">
<hello-world :ref="setItemRef"></hello-world>
</div>
</template>
<script>
import HelloWorld from "./components/HelloWorld.vue";
import { defineComponent, onMounted,onBeforeUpdate,onUpdated, ref } from "vue";
export default defineComponent({
name: "App",
components: {
HelloWorld,
},
setup() {
const HelloRef = ref(null);
const arr = ref([1, 2, 3]);
const HelloRefArr = ref([]);
const setItemRef = (el) => {
if (el) {
HelloRefArr.value.push(el);
}
};
onMounted(() => {
console.log(HelloRef.value, "HelloRef");
console.log(HelloRefArr.value, "HelloRefArr");
});
onBeforeUpdate(() => {
HelloRefArr.value = []
})
onUpdated(() => {
console.log(HelloRefArr.value,' HelloRefArr.value--update')
})
return {
HelloRef,
arr,
setItemRef,
HelloRefArr,
};
},
});
</script>
在vue3中循環(huán)綁定元素,與vue2不同是 ref需要先綁定一個(gè)方法通過(guò)這個(gè)方法獲取到實(shí)例保存在一個(gè)數(shù)組中
注意:
1.不必是數(shù)組:它也可以是一個(gè)對(duì)象,其 ref 可以通過(guò)迭代的 key 被設(shè)置。
2.如有需要,HelloRefArr 也可以是響應(yīng)式的,且可以被偵聽(tīng)。
在需要的時(shí)候通過(guò)這個(gè)數(shù)組去取。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue自定義指令中無(wú)法獲取this的問(wèn)題及解決
這篇文章主要介紹了Vue自定義指令中無(wú)法獲取this的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Vue.js中使用iView日期選擇器并設(shè)置開(kāi)始時(shí)間結(jié)束時(shí)間校驗(yàn)功能
本文通過(guò)實(shí)例代碼給大家介紹了Vue.js中使用iView日期選擇器并設(shè)置開(kāi)始時(shí)間結(jié)束時(shí)間校驗(yàn)功能,需要的朋友可以參考下2018-08-08
vue router學(xué)習(xí)之動(dòng)態(tài)路由和嵌套路由詳解
本篇文章主要介紹了vue router 動(dòng)態(tài)路由和嵌套路由,詳細(xì)的介紹了動(dòng)態(tài)路由和嵌套路由的使用方法,有興趣的可以了解一下2017-09-09
Vue項(xiàng)目打包部署到apache服務(wù)器的方法步驟
這篇文章主要介紹了Vue項(xiàng)目打包部署到apache服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
vue-cli history模式實(shí)現(xiàn)tomcat部署報(bào)404的解決方式
這篇文章主要介紹了vue-cli history模式實(shí)現(xiàn)tomcat部署報(bào)404的解決方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Vue實(shí)現(xiàn)input寬度隨文字長(zhǎng)度自適應(yīng)操作
這篇文章主要介紹了Vue實(shí)現(xiàn)input寬度隨文字長(zhǎng)度自適應(yīng)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07

