美文网首页
vue父子组件通过$attrs, $listeners传值

vue父子组件通过$attrs, $listeners传值

作者: 3e2235c61b99 | 来源:发表于2021-05-28 20:13 被阅读0次

attrs 和listeners 属性像两个收纳箱,attrs负责收纳属性(不包含props声明过,以及内置特性绑定属性,如class,style等...),listeners负责收纳事件

<!--father.vue-->
<template>
  <div>
    $attrs & $listerens
    <child :content="content" :bar="bar" @one="one" @two="two" class="child" style="color: red;"></child>
  </div>
</template>

<script>
import child from "./child.vue"
export default {
  components:{
    child
  },

  data() {
    return{
      content: "content值",
      bar: "bar值",
    }
  },

  mounted() {
    console.log("父组件mounted")
    console.log("this.$attrs", this.$attrs)
    console.log("this.$listeners", this.$listeners)
  },

  methods:{
    one() {

    },
    two() {

    },
  }
}
</script>

<style scoped>
  .child{
    font-size: 33px;
  }
</style>
<!--child.vue-->
<template>
  <div>child组件</div>
</template>

<script>
export default {
  props: {
    content:{
      type:String,
      default:""
    },
    // one: Function
    one:{
      type:Function,
      default:() => {
        return function() {

        }
      }
    },
  },

  mounted() {
    console.log("子组件mounted")
    console.log("this.$attrs", this.$attrs)
    console.log("this.$listeners", this.$listeners)
  }
}
</script>

以上代码输出:

子组件mounted
this.$attrs {bar: "bar值"}
this.$listeners {one: ƒ, two: ƒ}
父组件mounted
this.$attrs {}
this.$listeners {}

相关文章

网友评论

      本文标题:vue父子组件通过$attrs, $listeners传值

      本文链接:https://www.haomeiwen.com/subject/wqqesltx.html