vuex中getters类似计算属性computed,用法差不多
组件无法直接更改状态。触发函数更改。
注意一点,mapMutations是一个个方法的集合,所以,可以挂到组件的方法里面。
这一地点需要注意。
mapActions 指代的是异步任务的集合体。
actions 里面也是一个个函数,
eg : changeName(context,payload){
}
一般将context解构,
changeName({ commit },payload){
commit(‘changeName’,payload);
}
rm -r xxx删除文件。
1
s
e
t
方
法
c
o
n
s
t
v
m
=
n
e
w
V
u
e
(
x
x
)
;
v
m
.
set方法 const vm = new Vue(xx); vm.
set方法constvm=newVue(xx);vm.set(vm.obj,a,100)
这句话的意思是将obj上的a改为100.
这个方法大部分情况下用来更改对象上的属性
2vue重新渲染视图的操作是异步的。
vm.$nextTick(()=>{
console.log(vm.obj)
})
$nextTick会在页面重新渲染后执行。
vue的基本渲染流程
1以el挂载点的outerHTML(一个包含html的字符串)为模板生成AST抽象语法树,用render函数生成虚拟dom,然后再生成真实dom节点。最后生成的真实的dom,替换掉原来挂载的id为app的元素,也就是说,最后展示在我们面前的不是页面上写好的id为app的div,这一点要牢记。
当然,也有没有el的时候,此时,vue会看有莫有$mount,有的话继续上面的步骤,没有的话,vue就会停止解析,啥都不干了。
当然,在一步骤的时候,还会看,有没有template属性,如果有的话,就会以template为渲染模板,就不会以el为模板了,只是当做最后的替换元素的挂载点。这一点也要牢记。
其实还有一个知识点,那就是render函数,这个render函数的权重是最大的,当存在render函数的时候,渲染在页面尚德内容以render函数中的为主,谁来都不好使。当然你的有挂载点,不然他去替换谁,挂载到页面上,可以把挂载点理解为vue对象和html页面的连接桥梁。时刻谨记。不能忘记
以下是我写的挂载思路,
第一步,首先得有挂载点,el或者$mount(’#app’),
有的话才会存在后续操作,
第二步,以谁为模板,记住最终是以render()函数生成虚拟dom,没有render,就看template,没有template,就看挂载点。最后虚拟dom生成真实dom节点后,替换掉挂载点。
记住这两句话,挂载就问不倒你了。
vue生命周期简述
在beforeCrreated的时候,拿不到数据,
一般在created的时候,大家会发送ajax请求也就是初始化数据。其实也可推在$mounted得时候发送ajax请求。
注意beforeU[pdate和updated不要同时在这两个生命周期函数里面更改数据,会造成死循环。
计算属性和侦听器
计算属性在首次渲染页面的时候会执行,而侦听器首次渲染时不会执行。
计算属性里面不可以异步改变数据,类似setTimeout这样的函数是无用的,
而侦听器是可以异步改变的,这点要注意一下。
组件间的通信
父向子传值的方式:$attrs数值比较多的时候用v-bind传值。
子可以拿到父穿的值并且子未被注册的属性。此时给父组件设置inheritAttrs : false,这样就可以是元素上不显示这个属性。
$parent,注意,用的非常少,千万要注意这一点。
还有privide:{}
inject:[]
这个也不是常用的,注意开发时不要使用provide与inject,数据都不知道是谁传来的,造成数据混乱,所以不建议在开发时使用provide与inject.
3vue之导航守卫篇
我们在使用路由的时候,会在路由的对应的组件中加入路由的钩子函数,帮助我们做导航守卫
具体添加的钩子函数如下
(注意route没有r)
beforeRouteLeave(to,from,next){
}
注意,只要你写了beforeRouteLeave,函数里面没有执行next,点其他的地方就跳转不了。没写就没事。应用场景:在当前页面填写了内容之后,一不小心点击要跳转其他页面的按钮,可以向用户确认是否离开当前页面。提升用户体验。
beforeRouteEnter(to,from,next){
}
在进入当前路由对应组件之前执行的函数,有三个参数,to指代当前组件实例,from指代从哪个组件来的,next里面的第一个参数可以拿到当前组件实例对象,并且只有next执行才会跳转到当前页面来。