vue中provide和inject 用法

provider/inject:简单的来说就是在父组件中通过provider来提供变量,然后在子组件中通过inject来注入变量

需要注意的是这里不论子组件有多深,只要调用了inject那么就可以注入provider中的数据。而不是局限于只能从当前父组件的prop属性来获取数据。

provide() 可以传给所有子组件
所有的子组件 可以用 inject 接收 可以大范围使用

provider/inject 是不可响应的

父组件传给子组件

  data () {
    return {
      isTreeStatus: true
  },

// 父组件中返回要传给下级的数据
  provide () {
    return {
      isTreeStatus: this.isTreeStatus
    }
  },

子组件可以用 inject 接收

<template>
 <div v-if="isTreeStatus" class="loading"> </div>
</template>

props: {
  params: {
    type: Object,
    default: () => ({})
  }
},
inject: ["isTreeStatus"],

也可以传数组

  data() {
    return {
      datas: [
        {
          id: 1,
          label: "产品一",
        },
        {
          id: 1,
          label: "产品二",
        },
        {
          id: 1,
          label: "产品三",
        },
      ],
    };
  },
  provide() {
    return {
      datas: this.datas,
    };
  },

子组件接收

<template>
  <div>
    <ul>
      <li v-for="(item, index) in datas" :key="index">
        {{ item.label }}
      </li>
    </ul>
  </div>
</template>
    <script>
export default {
  inject: ["datas"],
};
</script>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值