綁定ref是Vue中十分重要的一部分,它是用來獲取DOM元素或者組件實(shí)例的。我們可以使用它來對(duì)特定的元素進(jìn)行操作,或者調(diào)用組件中的方法和屬性。
在Vue中給DOM元素綁定ref十分簡(jiǎn)單,只需要在元素上添加v-bind指令,值為字符串‘ref’加上我們所定義的ref名稱即可。
<div v-bind:ref="myElement"></div>
在組件中也可以綁定ref,同樣的方式在組件標(biāo)簽上添加v-bind指令,值為字符串‘ref’加上我們所定義的ref名稱。在組件中進(jìn)行綁定ref時(shí),我們需要注意的是獲取到的實(shí)例是組件實(shí)例而不是元素。
<my-component v-bind:ref="myComponent"></my-component>
獲取元素或者組件實(shí)例的方式也十分簡(jiǎn)單,在Vue實(shí)例中使用$refs即可獲取我們綁定ref的元素或者組件實(shí)例:
<script>
export default {
mounted() {
console.log(this.$refs.myElement); // 獲取元素
console.log(this.$refs.myComponent); // 獲取組件實(shí)例
}
}
</script>
另一個(gè)重要的使用場(chǎng)景是在子組件中調(diào)用父組件中的方法或?qū)傩浴N覀兛梢酝ㄟ^傳遞一個(gè)回調(diào)函數(shù)來實(shí)現(xiàn)這個(gè)功能:
// 父組件
<template>
<child-component :callback="handleCallback"></child-component>
</template>
<script>
export default {
methods: {
handleCallback() {
console.log("父組件方法被調(diào)用");
}
}
}
</script>
// 子組件
<template>
<div>
<button v-on:click="handleClick">觸發(fā)父組件方法</button>
</div>
</template>
<script>
export default {
props: {
callback: {
type: Function
}
},
methods: {
handleClick() {
this.callback();
}
}
}
</script>
可以看到,我們?cè)诟附M件中將handleCallback傳遞給了子組件作為參數(shù),子組件通過點(diǎn)擊button來觸發(fā)這個(gè)函數(shù),從而實(shí)現(xiàn)了在父組件中調(diào)用子組件中的方法。
總之,綁定ref可以實(shí)現(xiàn)獲取DOM元素、組件實(shí)例以及跨組件調(diào)用方法等重要功能,是Vue中的重要一環(huán)。