美文网首页
provide/inject

provide/inject

作者: 陈大事_code | 来源:发表于2019-08-09 14:39 被阅读0次

作用

成对出现,在组件中可以获取祖先组件的方法/属性,不管该组件嵌套有多深。

一般来说,我们可以通过$parent来使用父组件的方法/属性,但是对于祖先组件来说,可以比较困难。

使用场景

在嵌套很深的子孙组件中,调用顶层祖先组件的刷新页面方法。

// 顶层组件 Main.vue
export default {
    ...
    provide() {
        return {
            reload: this.reload();
        }
    },
    methods: {
        reload() {
            ... // 刷新页面方法逻辑
        }
    }
}
// 嵌套很深的一个子孙组件 
export default {
    ...
    inject: ['reload'],
    methods() {
        this.reload()   // 使用顶层组件中的刷新方法
    }
}

深入

  • 本身数据不具有响应式(重点-框架故意为之)
  • 如果需要做到某种程度的响应式,需要将provide设置成函数,且参数为对象。

如下示例:

// 组件1 - 提供provide: 
provide() {
    return {
      returnCate: this.obj,
    }
  },
      
   data() {
    return {
      obj: {
        category: '',
      },
    }
  },
      
   methods: {
    categoryChange(val) {
      // 一定要更这种方式改某个属性
      this.obj.categoryId = val
    },
  },
 
// 组件2 - 应用inject
inject: ['returnCate'],
watch: {
    'returnCate.categoryId'(val) {
        // 监听到响应式
        console.log('change', val)
    },
  },

相关文章

  • vue新特性provide/inject深入学习

    provide/inject深入学习 本文深入探究provide,inject 在官网porivide, inje...

  • vue 解决provide和inject响应

    vue 解决provide和inject响应 官网上说provide 和 inject 绑定并不是可响应的。这是刻...

  • provide/inject

    作用 成对出现,在组件中可以获取祖先组件的方法/属性,不管该组件嵌套有多深。 一般来说,我们可以通过$parent...

  • provide/inject

  • provide / inject

    类型: provide:Object | () => Objectinject:Array | { [key: ...

  • provide/inject

    使用provide传递当前组件实例 在后代组件中接收组件

  • provide / inject

    provide / inject这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次...

  • provide/inject

    provide/inject能够用于实现祖先和后代之间的传值parent 父组件 child 组件 grand 孙...

  • vue学习- provide / inject

    https://cn.vuejs.org/v2/api/#provide-inject 1、解释 provide ...

  • vue刷新当前页面

    provide 与 inject结合使用 在父组件中定义 provide App.vue