美文网首页
VUE数据传递 $attrs、 inheritAttrs、 $

VUE数据传递 $attrs、 inheritAttrs、 $

作者: 不详7 | 来源:发表于2020-05-11 19:47 被阅读0次


1.$attrs:

情景①:父子组价之间:没有在子组件props中接收的属性,子组件可以使用$attrs获取

   eg: 父组件:<child  :name="name"  :age="age"  sex="man">

            子组件:props:[name]

  则 子组件中的$attrs 为{ age:age,sex:'man' }。age为父组件data中定义的变量值

情景②:父组件-子组件-孙子组件:子组件传递v-bind:"$attrs"

eg: 父组件:<son :name="name" :age="age"  sex='man'>

           子组件:<grandson v-bind="$attrs">    

            孙子组件:<div>{{$attrs}}</div>            

孙子组件中的$attrs为{name:name,age:age,sex:"man"}


2.inheritAttrs

设置inheritAttrs:false  则 不会把父作用域的不被认作 props 的特性绑定 且作为普通的 HTML 特性应用在子组件的根元素上


3.$listeners

用于孙子组件修改父组件状态。

用法:父组件:<child  @event="func" />

            子组件:<grand v-on="$listeners">

            孙子组件:

template:`<div><button@click=" btnClick ">改变名字</button></div>`,

methods:{btnClick (){this.$emit('func','kkkkkk')}}


4.依赖注入 provide/inject

Vue2.2.0之后,Vue还提供了provide/inject选项

优点:在父组件只要声明了provide,在其子组件,孙组件,曾孙组件等能形成上下游关系的组件中交互,无论多深都能通过inject来访问provider中的数据。

provide 提供变量:Object | () => Object

inject 注入变量:Array<string> | { [key: string]: string | Symbol | Object }

eg:

父组件

provide:{

        msg:'this is a msg!'

}

子组件、孙子组件或N子组件:

inject:['msg']


5.$parent  $children  $refs 

可获得组件 并访问内部属性

相关文章

网友评论

      本文标题:VUE数据传递 $attrs、 inheritAttrs、 $

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