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)結(jié)束之后執(zhí)行延遲回調(diào)。
有些操作(比如 this.$refs)需要在確保DOM被渲染完成后才能調(diào)用成功,這樣就需要寫在 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"來定義的,則應(yīng)該是 this.$refs.[refName][0].xxx
3、ref 是在渲染完成之后才會有的,因此在調(diào)用 this.$refs.refName.xxx 的時候要確保 refName 這個DOM已經(jīng)被渲染出來了,最典型的就是 ueditor,我們需要在它被渲染出來之后才能去調(diào)用組件的 set 方法去填充編輯器的內(nèi)容,但是你并不知道它什么時候能渲染成功,只能使用延遲的方式,比如 this.$nextTick(() => {}),或者 window.setTimeout(() => {}, 500)
4、同樣的,由于 this.$refs 不是響應(yīng)式的,如果通過它來訪問標簽或組件的屬性,需要在 this.$nextTick(() => {}) 之內(nèi)。
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>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
echarts設(shè)置tootip輪播切換展示(vue3搭配vue-echarts粘貼即用)
這篇文章主要為大家介紹了echarts設(shè)置tootip輪播切換展示效果,vue3搭配vue-echarts粘貼即用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2023-10-10antdesign-vue結(jié)合sortablejs實現(xiàn)兩個table相互拖拽排序功能
這篇文章主要介紹了antdesign-vue結(jié)合sortablejs實現(xiàn)兩個table相互拖拽排序功能,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01Pinia入門學習之實現(xiàn)簡單的用戶狀態(tài)管理
Vue3雖然相對于Vue2很多東西都變了,但是核心的東西還是沒有變,比如說狀態(tài)管理、路由等,再Vue3中尤大神推薦我們使用pinia來實現(xiàn)狀態(tài)管理,他也說pinia就是Vuex的新版本,這篇文章主要給大家介紹了關(guān)于Pinia入門學習之實現(xiàn)簡單的用戶狀態(tài)管理的相關(guān)資料,需要的朋友可以參考下2022-11-11vue通過過濾器實現(xiàn)數(shù)據(jù)格式化
這篇文章主要介紹了vue通過過濾器實現(xiàn)數(shù)據(jù)格式化的方法,文中講解非常細致,幫助大家更好的理解和學習,感興趣的朋友可以了解下2020-07-07Vue如何在CSS中使用data定義的數(shù)據(jù)淺析
這篇文章主要給大家介紹了關(guān)于Vue如何在CSS中使用data定義的數(shù)據(jù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友可以參考下2022-05-05