vue面试题收揽

325 阅读4分钟

vue面试题

1.v-if和v-show的区别

相同点: v-show 和 v-if 都能控制元素的显示和隐藏。 不同点: v-show 本质就是通过设置 css 中的 display 设置为 none,控制隐藏 v-if 是动态的向 DOM 树内添加或者删除 DOM 元素,切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件

2.v-for中key的作用

当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据 项的顺序被改变, Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元 素,并且确保它在特定索引下显示已被渲染过的每个元素, key 的作用主要是为了高效的更新虚 拟 DOM

3.vue中的data为什么时function

JavaScript只有函数构成作用域(注意理解作用域,只有函数{}构成作用域,对象的{}以及if(){}都不构成作用域),data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响。

4.keep-alive的作用,被包裹的组件的生命周期

keep-alive是Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染

1、不使用keep-alive的情况:   beforeRouteEnter --> created --> mounted --> destroyed   2、使用keep-alive的情况:   beforeRouteEnter --> created --> mounted --> activated --> deactivated   3、使用keep-alive,并且再次进入了缓存页面的情况:   beforeRouteEnter -->activated --> deactivated

被keep-alive包裹住的页面都会被缓存,如果想刷新部分内容要启用activated函数,用法同created,activated只有在被keep-alive包裹时会触发,activated函数一进入页面就触发

5.vue的生命周期,以及生命周期都做了什么事情

vue 的生命周期是: vue 实例从创建到销毁,也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程。

6.vue什么时候操作dom比较合适?操作时发现有的组件获取不到怎么办?

vue从mounted钩子函数开始可以获取和操作dom,此前操作DOM浏览器会报错。 mounted 官方说明:el 被新创建的 vm.el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个文档内元素,当mounted被调用时vm.el 替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个文档内元素,当 mounted 被调用时 vm.el 也在文档内。 nexttick用于下次dom更新之后的延迟回调,在修改数据之后可以用nexttick用于下次dom更新之后的延迟回调,在修改数据之后可以用nexttick拿到回调函数中更新以后的dom

7.发送网络请求在那个函数中?

发送请求是异步操作,只有当同步任务结束的时候,才会执行异步操作,所以无论created mounted都是一样的。

8.vue组件之间传值的方法

子传父,this.$emit('自定义的事件名字',要传送的数据), @自定义的事件名=函数名 父传子,父:arr=list data:{return:{list:[]}} porp:['arr'] 兄弟组件之间,eventBus 需要用一个空白对象

9.vue中改变数组内索引的值,数据不更新,如何处理

Vue.set() 和 this.$set 都接受三个参数: 1.需要修改的数据源 2.需要修改的项的索引 3.修改的值

10.vuex

是一个专为 Vue.js 应用程序开发的状态管理模式 在使用Vuex进行状态管理时,只需要一个共享Store组件,多数组件都会用到的数据将写入Store中,其他使用的组件直接从Store中读取即可。 5 个核心属性是分别是 State、 Getter、Mutation(store.commit) 、Action(store.dispatch)、 Module

第一次页面加载会触发哪几个钩子?

第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子

watch、computed 和 methods 的区别

methods 方法:在重新渲染的时候每次都会被重新的调用;
computed是依赖已有的变量来计算一个目标变量,大多数情况都是多个变量凑在一起计算出一个变量,

并且computed具有缓存机制,依赖值不变的情况下其会直接读取缓存进行复用,computed不能进行异步操作 watch是监听某一个变量的变化,并执行相应的回调函数,通常是一个变量的变化决定多个变量的变化,watch可以进行异步操作 .简单记就是:一般情况下computed是多对一,watch是一对多

Vuex 的数据传递流程

当组件进行数据修改的时候我们需要调用 dispatch 来触发 actions 里面的方法。actions 里面

的每个方法中都会 有一个

1、commit 方法,当方法执行的时候会通过 commit 来触 mutations 里面的方法进行数据的修

2、mutations 里面的每个函数都会有一个 state 参数,这样就可以在 mutations 里面进行 state

的数据修改 ,当数据修改完毕后,会传导给页面,页面的数据也会发生改变

vue组件库element-ui 的validate方法

elment-ui封装好的用于对整个表单进行验证

  • validate的参数是一个回调函数。该回调函数在校验结束后被调用,是否校验成功和未通过校验的字段。

  • 若不传入回调函数,则会返回以promise

    调用validate()校验时,需要prop属性绑定校验项的字段名

image.png