您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Vue组件间通讯六种方式(残缺版)(3)
    时间:2019-05-17 12:18 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

        console.log(this.$attrs); // { "boo""Html""coo""CSS""doo""Vue""title""前端工匠" } 

      } 

    }; 

    </script> 

    // childCom2.vue 

    <template> 

      <div class="border"

        <p>boo: {{ boo }}</p> 

        <p>childCom2: {{ $attrs }}</p> 

        <child-com3 v-bind="$attrs"></child-com3> 

      </div> 

    </template> 

    <script> 

    const childCom3 = () => import("./childCom3.vue"); 

    export default { 

      components: { 

        childCom3 

      }, 

      inheritAttrs: false

      props: { 

        boo: String 

      }, 

      created() { 

        console.log(this.$attrs); // { "boo""Html""coo""CSS""doo""Vue""title""前端工匠" } 

      } 

    }; 

    </script> 

    // childCom3.vue 

    <template> 

      <div class="border"

        <p>childCom3: {{ $attrs }}</p> 

      </div> 

    </template> 

    <script> 

    export default { 

      props: { 

        coo: String, 

        title: String 

      } 

    }; 

    </script> 

    如上图所示$attrs表示没有承袭数据的对象,格式为{属性名:属性值}。Vue2.4提供了$attrs , $listeners 来传递数据与事情,跨级组件之间的通讯变得更复杂。

    复杂来说:$attrs与$listeners 是两个对象,$attrs 里寄存的是父组件中绑定的非 Props 属性,$listeners里寄存的是父组件中绑定的非原生事情。

    办法五、provide/inject

    1.简介

    Vue2.2.0新增API,这对选项需求一同运用,以允许一个祖先组件向其一切子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里一直失效。一言而蔽之:祖先组件中经过provider来提供变量,然后在子孙组件中经过inject来注入变量。

    provide / inject API 主要处置了跨级组件间的通讯成绩,不过它的运用场景,主要是子组件获取下级组件的形状,跨级组件间树立了一种自动提供与依赖注入的关系。

    2.举个例子

    假定有两个组件: A.vue 和 B.vue,B 是 A 的子组件

    // A.vue 

    export default { 

      provide: { 

        name'浪里行舟' 

      } 

    // B.vue 

    export default { 

      inject: ['name'], 

      mounted () { 

        console.log(this.name);  // 浪里行舟 

      } 

    (责任编辑:admin)