[TOC]
## 1.vuex的工作原理
```
1.在vue組件里面,通過dispatch來觸發actions提交修改數據的操作。
2.然后再通過actions的commit來觸發mutations來修改數據。
3.mutations接收到commit的請求,就會自動通過Mutate來修改state(數據中心里面的數據狀態)里面的數據。
4.最后由store觸發每一個調用它的組件的更新
Vuex的作用:項目數據狀態的集中管理,復雜組件(如兄弟組件、遠房親戚組件)的數據通信問題
methods: {
handleClick(event){
this.$store.dispatch("changeLetter",event.target.innerText);
}
},
action{
chageLetter(ctx,letter){
ctx.commit("changeleter",letter)
}
}
mutations{
changeletter(state,letter){
state.letter = letter
}
}
頁面調用this.$store.state.letter
```
## 2.小程序父子傳參
```
子: this.triggerEvent( '事件‘,{參數})
父: bind:事件="定義一個事件"
定義事件:傳event ,通過 event,detail.參數
```
```
父:通過屬性傳參 **phone=”{{phone}}”**
子:在 properties里接參數
```
## 3.vue緩存
```
keep-alive
activated/deactivated 激活停用時觸發
include 和 exclude 屬性允許組件有條件地緩存
```
## 4. vue中watch和computed的區別
```
watch主要是監聽數據變化,可以監聽數據來源的三個部分:props,data,computed內的數據,然后它還提供兩個參數(new,old),順序一定是新值、舊值。
computed主要是處理邏輯運算,computed來存儲需要處理的數據值,它有存儲的機制,只有改變時才執行。
```
## 4.深拷貝的方法
```
展開,slice ,concat,for in
```
## 3.vue的生命周期
生命周期鉤子的一些使用方法: beforecreate : 可以在這加個loading事件,在加載實例時觸發 created : 初始化完成時的事件寫在這里,如在這結束loading事件,異步請求也適宜在這里調用 mounted : 掛載元素,獲取到DOM節點 updated : 如果對數據統一處理,在這里寫上相應函數 beforeDestroy : 可以做一個確認停止事件的確認框 nextTick : 更新數據后立即操作dom
創建前/后: 在beforeCreated階段,[vue](https://www.baidu.com/s?wd=vue&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd)實例的**掛載元素**`$el`和\*\*數據對象\*\*data都為undefined,還未初始化。在created階段,vue實例的數據對象data有了,`$el`還沒有。
載入前/后:在beforeMount階段,vue實例的`$el和data`都初始化了,但還是**掛載之前**為**虛擬的dom節點**,**data.message**還未替換。在mounted階段,vue實例掛載完成,**data.message成功渲染**。
更新前/后:當data變化時,會觸發**beforeUpdate和updated**方法。
銷毀前/后:在執行destroy方法后,對data的改變不會再觸發周期函數,說明此時vue實例已經解除了`事件監聽`以及和`dom的綁定`,但是`dom結構`依然存在