当前位置: 代码迷 >> 综合 >> 2轮
  详细解决方案

2轮

热度:30   发布时间:2024-01-29 08:29:55.0

VUE

简单说一下生命周期.

生命周期就是从创建到销毁的过程.开始创建,初始化数据,编译模板,挂在dom,渲染,更新,渲染,销毁等一些列过程

beforCreate:只是单纯的创建$el和data

created:data进行初始化,$el实例还是处于创建状态

beforeMounte:data和$el都已经初始化完成,但是data还是之前虚拟的dom节点,data尚未替换,此时还没有挂在html在页面上

mounted:用真是数据替换虚拟DOM

beforeUpdate:data数据已经发生改变,但是未渲染

Updated:data数据已经发生改变,并且旧数据代替新数据

beforeDestory:在实例销毁钱调用,实例仍然完全可用

destoryed:实例销毁之后调用.调用后所有事件监听器会被移除,所有子实例也会被销毁.该钩子在服务器端渲染期间不会被调用

简述每个周期具体适合哪个场景

beforeCreate:可以在这个事件加loading,异步请求调用

created:初始化完成事件卸载这里面.像loading结束,或者发送异步请求

mounted:挂在元素,获取dom节点

beforeDestory:可以做停止确认框事件

nexTick:改变dom元素,nextTick方法延时调用函数事件来渲染视图

双向绑定原理:

采用数据劫持发布者-订阅者的方式,用Object.defineProperty()方法来对劫持数据属性的getter/setter,在数据发生变化时发送给订阅者,触发相应的监听回调

Vue组件有哪几种

1.父传子:props

子传父:emit

或者用ref来调用子组件的数据或方法

3.兄弟组件::(先创建一个eventVue.js文件,在兄弟组件中引入这个js事件,并且兄弟之间传递数据需要借助一个中间人,这个中间人是父组件,在父组件中引入兄弟组件,传递数据的组件触发bus.$emit事件,接收数据的组件用bus.$on接收参数,这样就达成了兄弟组件的传递

简单说一下vuex

vuex:状态库管理。主要分5大模块

state:状态库

mutations:相当于computed属性,改变state状态

actions:对mutations进行状态的改变

getter:过滤器,对state调用前的状态进行修改

modules模块:处理Store,时分工更清晰

vue组件传值

通过路由跳转传值

$router.push({
name:'A',
query:{
id:id
}
})

存在localSorage里面或者使用vuex数据管理传值

路由之间跳转

声明式:router-link

编程式:router.push

组件传值.sync

可以在子组件中修改值

// 父组件
<HelloWorld :msg="msg" @parentFun="change"></HelloWord>
watch:{
msg:(newValue,oldValue) => {
console.log(newValue)
console.log(oldValue)
}
}
// 子组件
changeMsg(){
this.$emit('update:msg','hello')
}

vuex怎么使用?使用场景

全局存储数据用的

在main中引入store,注入。

新建了一个目录store,...export.

场景:单页面应用,组件之间的状态

怎么定义vue-router的动态路由以及如何获取传过来的动态参数

在index.js文件中,对路径直接加上/:id(/router/:id)


//在index.js
{path: '/user/:userid',component: User,}

接受参数this.$route.params.id

vue-router有哪几种导航钩子?

全局导航钩子函数:

1.router.beforeEach(to,from,next)=====>(前置守卫)

作用:

  • 跳转前进行拦截
  • to:route即将进入的目标路由对象
  • from:route当前导航正要离开的路由
//单独设置每个路由的属性:
meta: { may: true }
router.beforeEach((to, from, next) => {if (to.matched.some(item => item.meta.may)) {let id = window.localStorage.getItem("id")if (id) {next()} else {next({ name: "login" })}} else {next()}
})

2.afterEach(后置钩子)

v-loader是什么,用途是什么?

解析:vue文件的一个加载器

用途:加载有vue-loader提取的css代码

  相关解决方案