Bootstrap

Vue 2&3进阶面试题:(第六天)

目录

21.vue-router有哪几种导航钩子?答:三种,

22.vuex是什么?怎么使用?哪种功能场景使用它?

23.vuex有哪几种属性

24.Vue的双向数据绑定原理是什么?


 

21.vue-router有哪几种导航钩子?
答:三种,

常用的有:

第一种:全局守卫

  • router.beforeEach(to,from,next),作用:跳转前进行判断拦截。
  • router.afterEach((to, from) => { // ... })作用:跳转后进行设置。

第二种:路由的独享守卫

比如:可以在路由配置上直接定义 beforeEnter

const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})

第三种:组件内守卫,有三种

  • beforeRouteEnter 在进入当前组件对应的路由前调用
  • beforeRouteUpdate 在当前路由改变,但是该组件被复用时调用
  • beforeRouteLeave 在离开当前组件对应的路由前调用

 

22.vuex是什么?怎么使用?哪种功能场景使用它?

 

答:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单来说就是:应用遇到多个组件共享状态时,使用vuex。

vuex的流程

页面通过mapAction异步提交事件到action。action通过commit把对应参数同步提交到mutation,mutation会修改state中对应的值。最后通过getter把对应值跑出去,在页面的计算属性中,通过,mapGetter来动态获取state中的值

 

场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车

23.vuex有哪几种属性

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

1. state:vuex的基本数据,用来存储变量

2. getter:从基本数据(state)派生的数据,相当于state的计算属性

3. mutation:提交更新数据的方法,必须是同步的(如果需要异步使用action)。每个mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数,提交载荷作为第二个参数。

4. action:1. Action 提交的是 mutation,而不是直接变更状态。 2. Action 可以包含任意异步操作。

5. modules:模块化vuex,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。

24.Vue的双向数据绑定原理是什么?

 

答:vue.js是采用数据劫持结合发布者 - 订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

 

;