1、這個兩個必須同時使用,當父組件定義的方法,子組件也想使用怎么辦了,這時候就可以派上用場了
provide:Object | () => Object
inject:Array<string> | { [key: string]: string | Symbol | Object }
父組件中
<template> <div id="app" > <router-view v-if="isRouterAlive" /> </div> </template> <script> export default { name: 'App', components: { }, data () { return { isShow: false, isRouterAlive: true }, // 父組件中返回要傳給下級的數據 provide () { return { reload: this.reload } }, methods: { reload () { this.isRouterAlive = false this.$nextTick(() => { this.isRouterAlive = true }) } } } </script>
子組件中
<template> <popup-assign :id="id" @success="successHandle" > <div class="confirm-d-tit"><span class="gray-small-btn">{{ name }}</span></div> <strong>將被分配給</strong> <a slot="reference" class="unite-btn" > 指派 </a> </popup-assign> </template> <script> import PopupAssign from '../PopupAssign' export default { //引用vue reload方法 inject: ['reload'], components: { PopupAssign }, methods: { // ...mapActions(['freshList']), async successHandle () { this.reload() } } } </script>
這樣就實現了子組件調取reload方法就實現了刷新vue組件的功能,個人認為它實現了組件跨越組件傳遞數據方法。