• 作用:实现祖与后代组件间通信
  • 套路:父组件有一个 provide 选项来提供数据,后代组件有一个 inject 选项来开始使用这些数据

具体写法:

1.传递数据

  1. 祖组件中:

    1. setup(){
    2. ......
    3. let car = reactive({name:'奔驰',price:'40万'})
    4. provide('car',car)
    5. ......
    6. }
  2. 后代组件中:

    1. setup(props,context){
    2. ......
    3. const car = inject('car')
    4. return {car}
    5. ......
    6. }

    2.第三方类库

    通过provide提供echarts和axios,xx组件通过inject接收

    App.vue

  1. import {provide} from 'vue'
  2. import * as echarts from 'echarts'
  3. import axios from 'axios'
  4. // axios.defaults.baseURL = '/api' //前端跨域时配置
  5. provide('echarts',echarts);
  6. provide('axios',axios);

XX.vue

  1. import {inject} from 'vue'
  2. //获取echarts
  3. let $echarts = inject('echarts')
  4. let $http = inject('axios')