使用方法

注入静态变量

computed: {
  rightheader: function () {
  }
},
provide() {
  return {
	rightheader: this.rightheader
  }
},
inject: ['rightheader'],

通过注入方法,动态获取数据

// 父组件
export default {
  // 这里改为提供一个方法
  provide() {
    return {
      getTestData: this.getTestData
    }
  },
  data () {
    return {
      testData: null
    }
  },
  methods: {
    // 方法中返回testData
    getTestData() {
      return this.testData
    }
  },
  components: {
    child
  },
  created() {
    this.testData = {
      name: 'hello'
    }
  }
}
// 子组件
export default {
  // 在子组件中注入这个方法
  inject: ['getTestData'],
  created() {
    console.log(this.getTestData())
  }
}

常见错误

Injection “getResData” not found

添加 default 属性,避免父级没有注入导致报错。

inject: {
	_test: {
	  default: 'I am a test' //the default property is used as fallback value
	},
	getResData: {       
	  default() {}
	},
	_validator: {
	  default() {//or we can use one factory method to warn the developers something.
		console.log('@warn@', 'parent does not provide validator')
	  }
	},
},
methods: {
	getTodo: function() {
	  return this._test
	}
}

扩展阅读