在Vue中,refs是一種用于訪問在模板中定義的DOM元素的方法。當我們需要直接訪問一個DOM元素來修改它的屬性或樣式時,refs就會非常有用。refs提供了一種可靠的方式來在Vue組件之間共享數據,而不必使用傳統的數據流傳遞方式。
refs可以在Vue中的任何位置使用,但通常最常用于組件的模板或JavaScript中。在模板中,refs可以使用v-bind屬性來綁定到HTML標記上。在JavaScript中,refs可以使用this.$refs對象來訪問。
HTML 標記
<div id="app">
<button ref="myButton">Click Me</button>
</div>
Vue 組件
Vue.component('my-component', {
template: '<button ref="myButton">Click Me</button>'
})
JavaScript 中引用
this.$refs.myButton
在Vue組件中,refs還可以用于訪問子組件的屬性和方法。通過為子組件定義ref屬性,我們可以將子組件的引用存儲在父組件的refs對象中,并訪問所有子組件的屬性和方法。
子組件模板
<div>
<input ref="myInput">
</div>
父組件模板
<my-component ref="myChild"></my-component>
JavaScript 代碼
this.$refs.myChild.$refs.myInput
在refs中還有一些高級用法,例如訪問組件實例中未公開的屬性和方法。我們可以在Vue組件中為屬性或方法添加ref標識符,并使用$refs訪問它們。
Vue 組件
Vue.component('my-component', {
data: function () {
var result = {};
result.privateProperty = 'This can’t be accessed from outside the component';
return result;
},
methods: {
privateMethod: function () {
console.log('This won’t work without the ref identifier.');
}
},
template: '<div ref="myDiv"></div>'
})
JavaScript 中訪問私有屬性
this.$refs.myChild.privateProperty
JavaScript 中調用私有函數
this.$refs.myChild.$options.methods.privateMethod()
refs也適用于vue-router,可以訪問路由指定路由組件的實例。
路由組件
Vue.component('my-component', {
data() {
return {
message: 'hello world!'
}
}
})
頁面
<template>
<div>
<my-component ref="myComp"></my-component>
</div>
</template>
JavaSicript中訪問組件
this.$router.$refs.myComp.message
綜上所述,refs提供了一種有用的方式來訪問DOM元素和組件實例。它也是Vue中一種強大的工具,可用于許多高級用例,例如訪問私有屬性和方法。
上一篇vue 樹形表格組建
下一篇curl傳遞json數據