• vue $attrs及$listeners 使用


    A-B-C 三个组件

    1. 引用关系:A引用B,B引用C
      步骤1. 跨组件传值:A传值到B, B使用C组件时,v-bind="$attrs"(固定写法),可以使父组件传入的值,以对象形式传递到C组件,如果C组件props申明了该字段,那么可以在C组件直接使用该字段
      步骤2. 跨组件传入回调函数:A引用B组件,导入方法@handleClick="xxxx", B使用C组件时,v-on="$listeners"(固定写法),可以在C组件直接this.$emit('handleClick'),调用A组件的方法

    实现代码:

    A组件:

    <template>
    	<div id="app">
    		<v-Filter
         		 :child1="1111"
         		 :child2="2222"
         		 @hanleClick="onTest1"
       		 />
    	</div>
    </template>
    
    <script>
    import Filter from './components/filter'
    
    export default {
      name: 'App',
      inheritAttrs: false,
      components: {
        'v-Filter': Filter
      },
      methods: {
        onTest1() {
          console.log(11111111);
        },
      }
    }
    </script>
    

    B组件:

    <template>
    	<div class="useBox">
    		<useC	
         		   v-bind="$attrs"
         		   v-on="$listeners"
    		/>
    	</div>
    </template>
    
    <script>
    import useC from "./useC.vue";
    export default {
      name: "Filter",
      components: {
        "useC ": useC 
      },
    }
    </script>
    

    C组件:

    <template>
      <div class="filterBox">
    	child2: {{child2}}
    	attrs: {{$attrs}}
    	<div @click="test">点击测试</div>
      </div>
    </template>
    
    <script>
    export default {
      props: ["child2"],
      methods: {
        clickTest() {
          // 这里可以直接调用A组件的回调函数
          this.$emit('hanleClick')
        },
      }
    }
    </script>
    
  • 相关阅读:
    使用Link Shell Extension方便的创建同步文件
    DOM案例【3】密码强度检查案例
    DOM案例【2】注册文本倒计时
    DOM案例【1】文本时钟
    HTML5 and CSS【01】Font
    常用单词
    CSS基础【01】类和ID选择器的区别
    【03】Html重点
    【02】Html(如鹏)
    C#MD5计算代码
  • 原文地址:https://www.cnblogs.com/yzyh/p/15648904.html
Copyright © 2020-2023  润新知