vue 中的 provide 和 inject 用法

 

provider/inject:简单来说就是在父组件 provide 中提供变量,子组件 inject 中来注入,然后可以在子组件内部使用 provide 的变量

需要注意的是这里不论子组件有多深,只要调用了inject那么就可以注入provider中的数据。而不是局限于只能从当前父组件的prop属性来获取数据。

 

App.vue

<template>
  <div id="app">
    <div>
      <second/>
    </div>
  </div>
</template>

<script>
import second from './components/Second'
  export default {
    name: 'app',
    components: {
      second
    },
    provide: {
      test: 'App 根组件的 provide'
    },
    data() {
      return {
      }
    },
    methods: {
    }
  }
</script>

<style>
</style>

  

Second.vue

<template>
    <div>
      <p>second: {{ test }}</p>
      <third/>
    </div>
</template>

<script>
import third from './Third.vue';
  export default {
    name: 'second',
    components: {
        third
    },
    inject: ['test'],
    data() {
      return {
        
      }
    },
    methods: {
    
    }
  }
</script>

<style>
</style>

 

Third.vue

<template>
    <div>
      <p>third: {{ test }}</p>
    </div>
</template>

<script>
  export default {
    name: 'third',
    components: {},
    inject: ['test'],
    data() {
      return {
        
      }
    },
    methods: {
    
    }
  }
</script>

<style>
</style>

  

 

  

 

posted @ 2018-12-26 12:57  佚名000  阅读(6027)  评论(0编辑  收藏  举报