對於vue的一些理解

首先是組件之間的通訊方式

  1. 父組件到子組件的通訊:
    props和$refs
  2. 子組件到父組件的通訊:
    events 和 $parents 以及 $root
  3. 組件之間的通訊
    eventBus和vuex
    eventBus的使用:
    引入vue的eventBus:
    import Vue from 'vue'; export default new Vue();
    以後,
    首先掛載事件: bus.$on('onChange', (params) => this.open(params));
    而後再調用:bus.$emit('onChange', params)
    不使用的時候要在聲明週期鉤子的destroyed中銷燬,由於eventBus不能自動銷燬。bus.$off('onChange')
    在使用event-bus的時候須要結合生命週期鉤子並用在合適的生命週期內。
    例如: 若是要在A頁面之中使用eventBus經過事件名‘onChange’將參數params傳遞到B頁面
    (1). 首先應該在AB頁面中分別引入新的Vue對象,做爲eventBus的載體,這時候能夠創建一個公共文件,做爲eventBus的載體
    event-bus.js:
    import Vue from 'vue'; export default new Vue();
    在A.vue和B.vue文件中引入
    import EventBus from 'event-bus.js'
    (2). 在B頁面中,掛載上EventBus事件,掛載事件發生在mounted的時候。
    EventBus.$on('onChange', params)
    (3). 在A頁面中 ,emit事件
    EventBus.$emit('onChange', {a:1})
    這樣就能夠把A頁面中的參數a的值1傳遞到B頁面中使用了。
    (4). 最後在B頁面的destory()生命週期中銷燬。
    EventBus.$off('onChange')
    (5). 可是有一點須要注意, 須要注意A,B頁面中生命週期的順序,須要優先加載A頁面,先將事件掛載上,不然參數根本傳不過來,再一點,若是不銷燬EventBus事件,會累計調用這個事件,隨着點擊次數增長。

v-if和v-show的區別已經適宜的使用場景

v-if是真正的條件渲染,條件切換的時候,子組件等也會隨着銷燬和重建,而且v-if的渲染是惰性的,知道條件爲真時,組件纔會被渲染。
v-show是組件頁面渲染的時候就被渲染了,無論條件是否爲真,條件只是用來單純的切換css的變化控制顯示隱藏。
v-if切換的時候開銷大,v-show初始渲染時候開銷比較大,因此,頻繁切換的時候使用v-show, 若是判斷條件比較少,就使用v-if。
相關文章
相關標籤/搜索