一文了解有关vue高级知识

86 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

emitemit on

 

emit传递事件emit 传递事件 on监听事件

子组件 父组件

this.$emit('removeTest',index)

@removeTest="remove"

remove() {}

 

arguments[0]形参 vue add element

将子组件中的值传递过来赋值给父组件value

<input type="text" : value="value" @input="onInput">

props: ['value'],

methods: {

onInput(e) {

let value = e.target.value;

this.$emit('input',value)

}

}


<k-input :value="value" @input="value == arguments[0]">

vue add element集成在vue上

provide inject

provide() { return { form: this //将组件实例作为提供者,子代组件方便获取 }; },

inject: ["form"],

 

路由命名

routere-link to="{name: 'home',params: {userid:123}}

 

动态路由

{path:'/page3/:id',component:Page3}

获取传过来的值

1).this$router.params,id

2).{ path: '/page3/:id', props: true, component: Page3 }

props:['id']

 

命名视图 一个组件内有多个router-view怎么分配组件

{

 path:'/home',

 compontents:{

  defalut: Home,

  a: List

 }

 

路由懒加载

 

{

  path:'/login',

  component:()=>import('./components/Login')

}

 

 

全局守卫

router.beforeEach((to, from, next ) => {

if(to.fullPath == 'shoppingCart') {

next('/login')

}

})

// beforeEnter()

//时间触发比前置钩子晚一些

router.beforeResolve((to, from, next ) => {

})

router.afterEach((to, from, next ) => {

})

 

路由独享的守卫

可以在路由配置上直接定义beforeEnter守卫 next()

组件内的守卫

beforeRouteEnter(to,from,next) {

 

},

beforeRouteUpdate(to,from,next) {

 

}

beforeRouteLeave(to,from,next) {

}

 

导航被触发

调用全局的beforeEach守卫

在重用的组件里调用beforeRouteUpdate守卫

在路由配置里调用beforeEnter

在被激活的组件里调用beforeRouteEnter

调用全局的beforeResolve(2.5+)

导航被确认

调用全局的afterEach钩子

触发DOM更新

 

vue请求反向代理

 

devServer: {

proxy: {

'/api': {

target: 'http://localhost:3000'. //代理目标

changeOrigin: true, //是否改变请求源

pathRewrite: {

'^/api': '/api'

}

}

}

}

  

.map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

 

.reduce()方法接受一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值,

对空数组是不会执行回调函数的

 

插槽

有name的属于具名插槽,没有name属于匿名插槽

普通插槽渲染的位置是在它的父组件里面,而不是子组件里面

作用域插槽渲染是在子组件里面

 

作用域插槽 slot-scope

作用域插槽在解析的时候,不会作为组件的孩子节点,会解析成函数,当子组件渲染时,会调用此函数进行渲染

 

或者可以说成作用域插槽是子组件可以在slot标签上绑定属性值,在父组件可以拿到子组件的数据,通过子组件绑定数据传递给父组件(插槽的作用域为子组件)