vue 依赖注入

  • 父组件
<template>
  <div>
    <child-com></child-com>
  </div>
</template>

<script>
export default {
  provide: function() {
    return {
      changeMy: this.changeMy
    };
  },
  components: {
    ChildCom: () => import("./Components/ChildCom")
  },
  methods: {
    changeMy() {
      console.log(666);
    }
  }
};
</script>
  • 子组件
<template>
  <div>
    <button @click="changeMy">点击</button>
  </div>
</template>

<script>
export default {
  inject: ['changeMy']
};
</script>

说明:
依赖注入方法很像我们去操作$parent property ,同比而言,依赖注入比较有好的扩展到更深层次的嵌套组件上,而我们的$parent想嵌套更深层次的组件时就需要不停的拼接$parent。
依赖注入提供给我们两个实例选项: provide 和 inject。provide 选项允许我们指定我们想要提供给后代组件的数据/方法,在任何后代组件中我们都可以使用inject选项来接收指定的我们想要添加在这个实例上的property。这样的话我们就不必暴露我们的整个父组件实例。这允许我们更好的持续研发该组件,而不需要担心我们可能会改变/移除一些子组件依赖的东西。同时这些组件之间的接口是始终明确定义的,就和 props 一样。

vue官方提醒:
然而,依赖注入还是有负面影响的。它将你应用程序中的组件与它们当前的组织方式耦合起来,使重构变得更加困难。同时所提供的 property 是非响应式的。这是出于设计的考虑,因为使用它们来创建一个中心化规模化的数据跟使用 $root做这件事都是不够好的。如果你想要共享的这个 property 是你的应用特有的,而不是通用化的,或者如果你想在祖先组件中更新所提供的数据,那么这意味着你可能需要换用一个像 Vuex 这样真正的状态管理方案了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值