vue中的this.$refs,this.$emit,this.$store,this.$nextTick的使用方式
this.$refs,this.$emit,this.$store,this.$nextTick的使用
this.$store
是vue用到了狀態(tài)管理工具 vuex,就是一個保存全局數(shù)據(jù)的庫。
this.$nextTick()
官方解釋:
在下次 DOM 更新循環(huán)結束之后執(zhí)行延遲回調。
有些操作(比如 this.$refs)需要在確保DOM被渲染完成后才能調用成功,這樣就需要寫在 this.$nextTick() 里面了。
this.$refs
我們在標簽或者組件上定義 ref屬性,比如在el-form上定義 ref="form1",這樣我們就可以使用this.$refs.form1.validate(...)來訪問這個組件中定義的屬性和方法,因為 Element-ui 為 el-form 定義了 validate 方法。
1、如果ref名稱是動態(tài)的呢,即 this.$refs.refName ,而 refName 是個變量(比如函數(shù)的參數(shù)),此時需要使用中括號,即 this.$refs.[refName].xxx
2、如果使用的:ref="xxx"來定義的,則應該是 this.$refs.[refName][0].xxx
3、ref 是在渲染完成之后才會有的,因此在調用 this.$refs.refName.xxx 的時候要確保 refName 這個DOM已經被渲染出來了,最典型的就是 ueditor,我們需要在它被渲染出來之后才能去調用組件的 set 方法去填充編輯器的內容,但是你并不知道它什么時候能渲染成功,只能使用延遲的方式,比如 this.$nextTick(() => {}),或者 window.setTimeout(() => {}, 500)
4、同樣的,由于 this.$refs 不是響應式的,如果通過它來訪問標簽或組件的屬性,需要在 this.$nextTick(() => {}) 之內。
this.$emit
this.$emit()主要用于子組件像父組件傳遞事件與參數(shù)。
上面說到,父組件可以使用 this.$refs 訪問子組件;這里的 this.$emit 就是子組件用來觸發(fā)父組件的事件。
<body>
<div id="counter-event-example">
<p>{{ total }}</p>
<button-counter v-on:increment="incrementTotal"></button-counter>
</div>
</body>
<script>
Vue.component('button-counter', {
template: '<button v-on:click="increment">{{ counter }}</button>',
data: function () {
return {
counter: 0
}
},
methods: {
increment: function () {
this.counter += 1;
this.$emit('increment', "參數(shù)"); // increment 是自定義的事件
}
}
});
new Vue({
el: '#counter-event-example',
data: {
total: 0
},
methods: {
incrementTotal: function (e) {
this.total += 1;
console.log(e);
}
}
})
</script>
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
echarts設置tootip輪播切換展示(vue3搭配vue-echarts粘貼即用)
這篇文章主要為大家介紹了echarts設置tootip輪播切換展示效果,vue3搭配vue-echarts粘貼即用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2023-10-10
antdesign-vue結合sortablejs實現(xiàn)兩個table相互拖拽排序功能
這篇文章主要介紹了antdesign-vue結合sortablejs實現(xiàn)兩個table相互拖拽排序功能,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
Pinia入門學習之實現(xiàn)簡單的用戶狀態(tài)管理
Vue3雖然相對于Vue2很多東西都變了,但是核心的東西還是沒有變,比如說狀態(tài)管理、路由等,再Vue3中尤大神推薦我們使用pinia來實現(xiàn)狀態(tài)管理,他也說pinia就是Vuex的新版本,這篇文章主要給大家介紹了關于Pinia入門學習之實現(xiàn)簡單的用戶狀態(tài)管理的相關資料,需要的朋友可以參考下2022-11-11
vue通過過濾器實現(xiàn)數(shù)據(jù)格式化
這篇文章主要介紹了vue通過過濾器實現(xiàn)數(shù)據(jù)格式化的方法,文中講解非常細致,幫助大家更好的理解和學習,感興趣的朋友可以了解下2020-07-07
Vue如何在CSS中使用data定義的數(shù)據(jù)淺析
這篇文章主要給大家介紹了關于Vue如何在CSS中使用data定義的數(shù)據(jù)的相關資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友可以參考下2022-05-05

