vue 中的 provide 和 inject 用法

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

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

App.vue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<template>
    <div>
      <p>third: {{ test }}</p>
    </div>
</template>
 
<script>
  export default {
    name: 'third',
    components: {},
    inject: ['test'],
    data() {
      return {
         
      }
    },
    methods: {
     
    }
  }
</script>
 
<style>
</style>
原文地址:https://www.cnblogs.com/1549983239yifeng/p/14163503.html