首页 > 其他分享 >vue注意点$attrs、$slots

vue注意点$attrs、$slots

时间:2023-02-08 17:44:31浏览次数:42  
标签:vue false inheritAttrs 传递 attrs props 组件 slots

$attrs号称捡漏王

当父组件给子组件传值,子组件并没有接收数据时,此时数据在$attrs中可以拿到,并且如果子组件不需要使用数据,而孙组件需要,则可以直接v-bind="$attrs"传给孙。

示例:

<-- 父组件 -->
<div>
  <myButton type="primary"/>
<div>
<-- 子组件 -->
<el-button v-band='$attrs'>主要按钮</el-button>

这样的写法就会直接将type="primary"传递给孙组件中,子组件不需要使用props来接收,这样写的好处是无需再子组件中定义props,属性有时候也并不确定

同样孙组件中也可以采用props来接受父组件传递过来的参数

<template>
	<button></button>
</template>
 
<script>
export default {
 inheritAttrs: false,
  props: [
    "type",//注意props里的参数名称不能改变,必须和父组件传递过来的是一样的
  ],
  mounted(){
      console.log(this.$attrs) //可直接使用数据或者调用根组件的方法
  }
};
</script>

inheritAttrs

inheritAttrs的值为boolean,默认为true,由于v-band='$attrs'传递过来的值会作为dom元素上的属性存在,设置为false可以阻止这个行为,这些属性仍然可以通过$attrs来访问,class和style不会受到影响

  • inheritAttrs: true
    image

  • inheritAttrs: false

标签:vue,false,inheritAttrs,传递,attrs,props,组件,slots
From: https://www.cnblogs.com/icey-Tang/p/17102535.html

相关文章