vue的provide / inject向子孙组件传递数据/方法

1. vue的2.2.0版本新增的属性:用以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。即祖先组件可(不论组件层次有多深)向其子孙组件传递事件,变量。参考官网:https://cn.vuejs.org/v2/api/#provide-inject

<template>
 <div>
    <childOne></childOne>
 </div>
</template>
 
<script>
 import childOne from '@/ChildOne'
 export default {
  name: "Parent",
  provide: {  //父组件,设置provide,可将变量,函数传递给其子孙组件中调用/使用。
    val: "demo",
    arr:[1,2,3],
    func:this.func,
  },
  methods:{
    func(){

    }
  },
  components:{
   childOne
  }
 }
<template>
 <div>
  {{parentProvide}}
  <childtwo></childtwo>
 </div>
</template>
 
<script>
 import childtwo from '@/ChildTwo'
 export default {
  name: "childOne",
  inject: ['val'],
  data() {
   return {
    parentProvide: this.val,  //接受父组件传递过来的变量
   }
  },
  mounted(){
    this.func();  //调用父组件传递过来的方法
  },
  components: {
   childtwo
  }
 }
</script>
<template>
 <div>
     <span v-for='(item,index) in arr' :key='index'></span>
 </div>
</template>
 
<script>
 export default {
  name: "childThird",
  inject: ['arr'],
  data() {
   return {
    arr: this.arr
   }
  }
 }
</script>

 

 

上一篇:vue—依赖注入


下一篇:Vue.js provide / inject 踩坑