zoukankan      html  css  js  c++  java
  • vue中$attrs

    一、概念

      vue官网定义如下:

      包含了父作用域中不作为 prop 被识别 (且获取) 的 attribute 绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过v-bind="$attrs"传入内部组件——在创建高级别的组件时非常有用。

    二、用处

      vue中一个比较令人烦恼的事情是属性只能从父组件传递给子组件。这也就意味着当你想向嵌套层级比较深组件数据传递,只能由父组件传递给子组件,子组件再传递给孙子组件。

      常用的几个组件之间数据传递的方法有如下几个:

      1、通过 props 的方式向子组件传递(父子组件)

      2、vuex 进行状态管理

      3、非父子组件的通信传递 Vue Event Bus,使用Vue的实例,实现事件的监听和发布,实现组件之间的传递

      4、$attrs的方式

    三、示例

      在vue中新建三个组件,分别为父组件(Father),子组件(Son)和孙子组件(Grandson)。

      父组件(Father)的代码如下:

    <template>
        <div style="background: aquamarine">
            <div>Here is Father</div>
            <son :sonAge=20 :grandsonAge=10></son>
        </div>
    </template>
    
    <script>
        import Son from "./Son";
        export default {
            name: "Father",
            components: {
                Son
            },
        }
    </script>
    
    <style scoped>
    
    </style>

      子组件(Son)的代码如下:

    <template>
        <div style="background: antiquewhite">
            <div>Here is Son</div>
            <div>Son age:{{$attrs.sonAge}}</div>
            <grandson v-bind="$attrs"></grandson>
        </div>
    </template>
    
    <script>
        import Grandson from "./Grandson";
        export default {
            name: "Son",
            components: {
                Grandson
            },
        }
    </script>
    
    <style scoped>
    
    </style>

      孙子组件(Grandson)的代码如下:

    <template>
        <div style="background: gainsboro">
            <div>Here is Grandson</div>
            <div>Grandson age: {{$attrs.grandsonAge}}</div>
        </div>
    </template>
    
    <script>
        export default {
            name: "Grandson",
        }
    </script>
    
    <style scoped>
    
    </style>

      效果如下所示:

       孙子组件(Grandson)上通过v-bind的方式就可以把子组件(Son)中未声明,而孙子组件(Grandson)需要从父组件(Father)中获取的数据传输过来。

  • 相关阅读:
    linux 清理cache中的内存
    科学计算和可视化
    Python生成随机数的方法
    matplotlib绘图的基本操作
    python中的数组和列表
    Python人工智能学习笔记
    利用numpy+matplotlib绘图的基本操作教程
    split函数用法
    玩转PIL库
    广师大学习笔记之文本统计(jieba库好玩的词云)
  • 原文地址:https://www.cnblogs.com/gg-qq/p/13952132.html
Copyright © 2011-2022 走看看