第一天
-
v-show和v-if的区别
答:v-show通过css display控制显示和隐藏,v-if组件真正的渲染和销毁,而不是显示和隐藏,频繁切换状态使用v-show 否则v-if -
为何v-for要用key
答:快速查找到节点,减少渲染次数,提升渲染性能 -
组件渲染和更新的过程
①、初次渲染
答:1、解析模板为rander函数
2、触发响应式,监听 data 属性的 getter 和 setter
3、执行 render 函数, 生成 vnode,patch
②、更新过程
答:1、修改 data,触发 setter(此前在getter中已被监听)
2、重新执行 render 函数,生成 newVnode,patch(vnode, newVnode) -
computed有何特性
答:做缓存,data中的值不改变不会重新计算,提高性能 -
ajax请求应该放在哪个生命周期
答:create或mounted因为js是单线程,ajax异步获取数据 -
如何将组件所有props传递给子组件?
答:父组件绑定一个自定义属性变量,然后子组件通过props使用这个变量即可。 -
## vue为何是异步渲染,nextTick何用?
答:①、因为如果不采用异步更新,那么每次更新数据都会对当前组件进行重新渲染,所以考虑性能问题,Vue会在本轮数据更新之后,再去异步更新视图 ②、nextTick是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 nextTick,则可以在回调中获取更新后的DOM -
子组件调用父组件的方法
答:1.直接在子组件中通过this.parent.event来调用父组件的方法
2.在子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了
3.父组件把方法传入子组件中,在子组件里直接调用这个方法 -
父组件调用子组件的方法
答:在子组件上绑定ref属性,通过this.$refs.子组件方法即可 -
route和$router的区别是什么?
答:①、router为VueRouter的实例,是一个全局路由对象,包含了路由跳转的方法、钩子函数等
②、route 是路由信息对象||跳转的路由对象,每一个路由都会有一个route对象,是一个局部对象,包含path,params,hash,query,fullPath,matched,name等路由信息参数。