zoukankan      html  css  js  c++  java
  • Vue $attrs / $listeners

    $attrs

    把父组件中非props属性绑定到内部组件

    $listeners

    把父组件中的DOM对象的原生事件绑定到内部组件

    1.父组件传给自定义子组件的属性,如果没有prop接收,会自动设置到子组件内部的最外层标签上, 如果是 class 或者 style 的话,会合并最外层标签的 classstyle

    <!-- 父组件 -->
    <demo class="parent-class" required placeholder="Hello vue"></demo>
    
    <!-- 子组件 -->
    <div>
     <input type="text" class="form-control" />
    </div>
    
    <!-- 不使用 $attrs 和 inheritAttrs=false -->
    <!-- 把非props的属性添加到最外层的元素上 -->
    <div required="required" placeholder="Hello vue" class="parent-class">
     <input type="text" class="form-control">
    </div>
    

    2.如果子组件不想继承父组件传入的非props属性,可以使用 inheritAttrs 禁用继承, 然后通过 v-bind="$attrs" 把外部传入的非props属性添加到希望的标签上. 但是这不会改变 classstyle(还是会把class和style添加到最外层的元素上)

    <!-- 子组件 -->
    <div>
     <input type="text" class="form-control" v-bind="$attrs" />
    </div>
    <!-- 使用$attrs 和 inheritAttrs=false -->
    <!-- 除了 class 和 style 属性都被加在指定的元素上 -->
    <div class="parent-class">
     <input type="text" required="required" placeholder="Hello vue" class="form-control">
    </div>
    

    3. 给子组件绑定事件

    <!-- 父组件 -->
    <demo class="parent-class" required placeholder="Hello vue" @focus="onFocus" @input="onInput"></demo>
    
    <!-- 子组件 -->
    <div>
        <input
          type="text"
          class="form-control"
          v-bind="$attrs"
          @input="$emit('input',$event)"
          @focus="$emit('focus',$event)"
        />
      </div>
    

    4. 通过$listeners简化事件的注册(效果同3一致)

    <!-- 父组件 -->
    <demo class="parent-class" required placeholder="Hello vue" @focus="onFocus" @input="onInput"></demo>
    
    <!-- 子组件 -->
    <input type="text" class="form-control" v-bind="$attrs" v-on="$listeners" />
    
    Keep learning
  • 相关阅读:
    构造无限级树并深度遍历查找指定节点
    如何用python自动编写《赤壁赋》文档
    《易经》总结
    IDEA看代码必备插件Call Graph 介绍及使用方法
    chemfig化学式转换为pdf
    从wav到Ogg Opus 以及使用java解码OPUS
    使用jhipster 加速java web开发
    从Spring框架看设计模式如何灵活使用
    提升NginxTLS/SSL HTTPS 性能的7条优化建议
    高效团队的gitlab flow最佳实践
  • 原文地址:https://www.cnblogs.com/leslie1943/p/13615163.html
Copyright © 2011-2022 走看看