vue知识点总结

81 阅读1分钟

image.png

$attr

特性继承

在父子组件中,如果在父组件中使用子组件时,传入了一些非 props 属性,那么将来这些属性会直接作用在子组件的根元素

作用

由于特性继承的原因,直接在使用子组件时,传入非 props 属性,这个属性只会作用到子组件的根元素上。可以使用 $attrs 来将这些非 props 属性,传入给子组件中指定的元素

用法

// 父组件
<template>
    <div>
       <son placeholder="你好啊" abc="111" />
    </div>
</template>
// 子组件
<template>
    <div>
        <input type="text" v-bind="$attrs">
    </div>
</template>

注意点

inheritAttrs: 可以用来让子组件的根元素不去继承父组件传入的非 props 属性

// 子组件
<template></template>
<script>
export default {
  inheritAttrs: false
}
</script>

$listeners

作用

直接在子组件中实现父组件中的事件

// 子组件
<template>
    <div>
        <input type="text" v-on="$listeners">
    </div>
</template>

动态组件

<template>
	<div>
		<component :is="comName"></component>
	</div>
</template>

异步组件

同步组件

import login from './login'

异步组件

const Login = () => import('./login')

插槽

概念:在父子组件中,使用子组件时,子组件中的内容可能是固定的。但是有时候又需要将子组件中固定的内容进行替换。就可以使用插槽。

默认插槽

// 子组件
<template>
    <div>
        <slot>可以被替换的内容</slot>
    </div>
</template>
// 父组件
<tempalte>
    <son1>我是要替换插槽的内容</son1>
</template>

具名插槽

// 子组件
<template>
    <div>
        <slot name="content">可以被替换的内容</slot>
    </div>
</template>
// 父组件
<tempalte>
    <son1>
        <template v-slot:content>我是要替换插槽的内容</template>
    </son1>
</template>

作用域插槽

  • 作用:在子组件中将参数以插槽的方式传给父组件来使用
  • 子组件: image.png
  • 父组件 image.png