VUE面试题汇总(八)

news/2024/7/24 3:54:56

往期点这里:↓
VUE面试题汇总(一)
VUE面试题汇总(二)
VUE面试题汇总(三)
VUE面试题汇总(四)
VUE面试题汇总(五)
VUE面试题汇总(六)
VUE面试题汇总(七)
71. vuex 有哪几种属性?

参考答案:

有五种,分别是 State、 Getter、Mutation 、Action、 Module

vuex的State特性

A、Vuex就是一个仓库,仓库里面放了很多对象。其中state就是数据源存放地,对应于一般Vue对象里面的data
B、state里面存放的数据是响应式的,Vue组件从store中读取数据,若是store中的数据发生改变,依赖这个数据的组件也会发生更新
C、它通过mapState把全局的 state 和 getters 映射到当前组件的 computed 计算属性中

· vuex的Getter特性

A、getters 可以对State进行计算操作,它就是Store的计算属性
B、 虽然在组件内也可以做计算属性,但是getters 可以在多组件之间复用
C、 如果一个状态只在一个组件内使用,是可以不用getters

· vuex的Mutation特性

Action 类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态;Action 可以包含任意异步操作。

72. 不用 Vuex 会带来什么问题?

参考答案:

可维护性会下降,想修改数据要维护三个地方;

可读性会下降,因为一个组件里的数据,根本就看不出来是从哪来的;

增加耦合,大量的上传派发,会让耦合性大大增加,本来 Vue 用 Component 就是为了减少耦合,现在这么用,和组件化的初衷相背。

73. vue-router 如何响应路由参数的变化?

参考答案:

什么是路由参数的变化

当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。

监测路由参数变化的方法

方法一watch监听:

watch: { // watch的第一种写法
    $route (to, from) {
        console.log(to)
        console.log(from)
    }
},
 
====
 
watch: { // watch的第二种写法
    $route: {
        handler (to, from){
            console.log(to)
            console.log(from)
        },
        // 深度观察监听
        deep: true
    }
},
 
====
 
watch: { // watch的第三种写法
    '$route':'getPath'
},
methods: {
    getPath(to, from){
        console.log(this.$route.path);
    }
},

方法二:导航守卫

beforeRouteEnter (to, from, next) {
    console.log('beforeRouteEnter被调用:在渲染该组件的对应路由被 confirm 前调用')
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this` 因为当守卫执行前,组件实例还没被创建
    // 可以通过传一个回调给 next来访问组件实例。在导航被确认的时候执行回调,并且把组件实例作为回调方法的参数。
    next(vm => {
        // 通过 `vm` 访问组件实例
        console.log(vm)
    })
},
// beforeRouteEnter 是支持给 next 传递回调的唯一守卫。
// 对于 beforeRouteUpdate 和 beforeRouteLeave 来说,this 已经可用了,所以不支持传递回调,因为没有必要了。
beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
    console.log('beforeRouteUpdate被调用:在当前路由改变,但是该组件被复用时调用')
    next()
},
beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
    const answer = window.confirm('是否确认离开当前页面')
    if (answer) {
        console.log('beforeRouteLeave被调用:导航离开该组件的对应路由时调用')
        next()
    } else {
        next(false)
    }
},

74. 完整的 vue-router 导航解析流程

参考答案:

  1. 导航被触发。
  2. 在失活的组件里调用 beforeRouteLeave 守卫。
  3. 调用全局的 beforeEach 守卫。
  4. 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。
  5. 在路由配置里调用 beforeEnter
  6. 解析异步路由组件。
  7. 在被激活的组件里调用 beforeRouteEnter
  8. 调用全局的 beforeResolve 守卫 (2.5+)。
  9. 导航被确认。
  10. 调用全局的 afterEach 钩子。
  11. 触发 DOM 更新。
  12. 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。

75. vue-router 有哪几种导航钩子( 导航守卫 )?

参考答案:
三种

第一种:全局导航钩子:router. beforeEach(to, from, next),作用:跳转前进行判断拦截。
第二种:组件内的钩子;
第三种:单独路由独享组件

76. vue-router 的几种实例方法以及参数传递

参考答案:
参考

77. 怎么定义 vue-router 的动态路由?怎么获取传过来的动态参数?

参考答案:

在 router 目录下的 index. js 文件中,对 path 属性加上/:id。 使用 router 对象的 params. id

78. vue-router 如何定义嵌套路由?

参考答案:
参考

79. <router-link></router-link> 组件及其属性

参考答案:

<router-link> 组件支持用户在具有路由功能的应用中 (点击) 导航。 通过 to 属性指定目标地址,默认渲染成带有正确链接的 <a> 标签,可以通过配置 tag 属性生成别的标签.。另外,当目标路由成功激活时,链接元素自动设置一个表示激活的 CSS 类名。

<router-link> 比起写死的 <a href="..."> 会好一些,理由如下:

无论是 HTML5 history 模式还是 hash 模式,它的表现行为一致,所以,当你要切换路由模式,或者在 IE9 降级使用 hash 模式,无须作任何变动。
在 HTML5 history 模式下,router-link 会守卫点击事件,让浏览器不再重新加载页面。
当你在 HTML5 history 模式下使用 base 选项之后,所有的 to 属性都不需要写 (基路径) 了。

属性:参考Vue.js官网API

80. vue-router 实现路由懒加载( 动态加载路由 )

参考答案:参考


http://www.niftyadmin.cn/n/805912.html

相关文章

【JVM系列】HotSpot回收算法细节

HotSpot算法细节 发起内存回收 安全点 安全点如何选取 数量&#xff1a;其选定的既不能太少以至于让收集器等待时间过长&#xff0c;也不能太过频繁以至于过分增大运行时的内存负荷。位置&#xff1a;安全点位置的选取基本上是以“是否具有让程序长时间执行的特征”为标准进…

java 发送邮件email

发送邮件 一、添加maven依赖&#xff1a; <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.0</version> </dependency> 二、email工具类 import com.jfinal.log.Log; i…

在VB6中导出EXCEL,FOXPRO,PRODOX格式的表 (转)

在VB6中导出EXCEL&#xff0c;FOXPRO&#xff0c;PRODOX格式的表 (转)[more]MIS系统在月末由于业务的需要总要汇总当月业务情况&#xff0c;并且导出报盘&#xff0c;我把我的程序中的这一部分功能单拿出来&#xff0c;做成一个小的程序&#xff0c;仅供参考。 一般是在ACCESS或…

Android窗口管理服务WindowManagerService的简要介绍和学习计划

在前一个系列文章中&#xff0c;我们从个体的角度来分析了Android应用程序窗口的实现框架。事实上&#xff0c;如果我们从整体的角度来看&#xff0c;Android应用程序窗口的 实现要更复杂&#xff0c;因为它们的类型和作用不同&#xff0c;且会相互影响。在Android系统中&#…

绝!2D素材3D效果!

用2D素材实现3D效果!前言好久没写教程笔记了&#xff0c;不知大伙是否想念教程了&#xff1f;温馨提示&#xff1a;所有内容纯属个人瞎玩研究&#xff0c;如要上线项目&#xff0c;请自行评估~ oh最近逛论坛&#xff0c;看到有一位小伙伴想实现下面这种透视效果。预期效果接着&…

【JVM系列】经典垃圾回收器

垃圾回收器 分类 Partial GC&#xff1a;并不收集整个GC堆的模式 Young GC&#xff1a;只收集young gen的GC&#xff0c;有 Serial GC 、ParNew GC、Parallel Scavenge GC。Old GC&#xff1a;只收集old gen的GC。只有 CMS GC 是针对老年代的。Mixed GC&#xff1a;收集整个yo…

Java 文件IO读取工具类

import java.io.*; import java.util.HashSet; import java.util.Iterator; import java.util.Set;public class FileReAndWrUtil {/*** 读取文件* param file* return*/public static Set<String> readFile(File file){Set<String> set new HashSet<>();Fi…

华为OD机试真题 Python 实现【工作安排】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 小明每周上班都会拿着自己的工作清单&#xff0c;工作清单内包含n项工作&#xff0c;每项工作都有对应的耗时时长&#xff08;单位h&#xff09;和报…