[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结构`依然存在