Vue 23进阶面试题:(第六天)
目录
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,在数据变动时发布消息给订阅者,触发相应的监听回调。