Vue 初级知识汇总
Vue2.0 兼容 IE 哪个版本以上吗
vue 的生命周期是什么
beforeCreate
:实例创建前被调用created
:实例创建后被调用,完成数据观测,属性和方法的运算,watch/event 实际回调,模板渲染成 html(vm.$el 未定义),数据初始化最好在这个阶段完成beforeMount
: 在$el挂载前被调用,相关的 render 函数首次被调用,期间将模块渲染成html,此时vm.$el 还是未定义;mounted
: 在$el挂载后被调用,此时vm.$el 可以调用,不能保证所有的子组件都挂载,要等视图全部更新完毕用 vm.$nextTick()beforeUpdate
:数据更新时调用;updated
:数据更新后调用;activated
:<keep-alive></keep-alive>
包裹的组件激活时调用deactivated
:<keep-alive></keep-alive>
包裹的组件离开时调用beforeDestroy
:实例销毁之前调用,此时实例仍然完全可用;destroyed
:实例销毁之后调用,此时实例的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
computed 中的属性名和 data 中的属性名可以相同么
怎么缓存当前打开的路由组件,缓存后想更新当前组件怎么办呢
用keep-alive
内置组件包裹路由组件,在钩子函数 activated 中更新。
跟 keep-alive 有关的生命周期是哪些
- activated 钩子:keep-alive 组件激活时调用。
- deactivated 钩子:keep-alive 组件停用时调用。
- 以上钩子服务器端渲染期间不被调用。
watch 的属性使用箭头函数定义可以吗
不可以。this 会是 undefind,因为箭头函数中的 this 指向的是定义时的 this,而不是执行时的 this,所以不会指向 Vue 实例的上下文。
1 | watch:{ |
怎么在 watch 监听开始之后立即被调用
1 | watch:{ |
watch 怎么深度监听对象变化
在选项参数中指定 deep:true。
1 | watch:{ |
怎么强制刷新组件
1 | <template> |
父组件中的自定义事件怎么接收子组件的多个参数
给组件绑定自定义事件无效怎么解决
1 | <template> |
怎么访问子组件的实例或者子元素
1 | <template> |
1 | <ul ref="mydiv"> |
怎么在子组件中访问父组件的实例
在子组件中使用this.$parent
来访问
怎么在组件中访问到根实例
在子组件中使用this.$root
来访问
组件会在什么时候下被销毁
- 没有使用 keep-alive 时的路由切换;
- v-if=’false’;
- 执行 vm.$destroy();
Vue 组件之间的通信都有哪些
- props
- this.$emit(‘input’,data)
- this.$root.$on(‘input’,function(data){})和 this.$root.$emit(‘emit’,data)
- this.$refs.tree(tree 为 ref 绑定值)
- Vuex
prop 验证的 type 类型有哪几种 ,可以设置默认值吗
String、Number、Boolean、Array、Object、Date、Function、Symbol, 此外还可以是一个自定义的构造函数 Personnel,并且通过 instanceof 来验证 propwokrer 的值是否是通过这个自定义的构造函数创建的。
1 | function Personnel(name, age) { |
在 Vue 事件中是如何使用 event 对象的
@click="handleOpen"
默认第一个参数传入 event 对象;@click="handleOpen(0, $event)
,如果自己需要传入参数和 event 对象,则需要使用$event 来获取 event 对象并传入 handleOpen。
在 Vue 事件中传入$event,使用$event.target 和$event.currentTarget 有什么区别
$event.currentTarget
始终指向事件所绑定的元素,而$event.target
指向事件发生时的元素。
表单修饰符和事件修饰符
.stop:阻止事件传递
.prevent: 阻止默认事件;
.capture :在捕获的过程监听,没有 capture 修饰符时都是默认冒泡过程 监听;
.self:当前绑定事件的元素才能触发;
.once:事件只会触发一次;
.passive:默认事件会立即触发,不要把.passive 和.prevent 一起使用,因为.prevent 将不起作用。
表单修饰符.number .lazy .trim
使用事件修饰符要注意
要注意顺序很重要,用@click.prevent.self
会阻止所有的点击,而@click.self.prevent
只会阻止对元素自身的点击。
Vue 如何监听键盘事件
使用按键修饰符 <input @keyup.enter="submit">
按下回车键时候触发 submit 事件
- .enter
- .tab
- .delete (捕获“删除”和“退格”键)
- .esc
- .space
- .up
- .down
- .left
- .right。
v-show 和 v-if 有什么区别?使用场景分别是什么
- v-show,切换元素的 display 属性,来控制元素显示隐藏,初始化会渲染,适用频繁显示隐藏的元素,不能用在
<template>
上; - v-if,通过销毁并重建组件,来控制组件显示隐藏,初始化不会渲染,不适用频繁显示隐藏的组件,可以用在
<template>
上。
vm.$nextTick 有什么作用
vm.$nextTick(() =>{this.handleadd()}),将 handleadd 回调延迟到下次 DOM 更新循环之后执行。
Vue 中怎么重置 data
Object.assign(this.$data,this.$options.data())。