vue3学习教程第十一节(依赖注入:provide/inject父子传参)

本机介绍:provide/inject
注意:大家在看此小节时候,默认大家已经了解一些组件的使用方法

1、依赖注入的用途:

当嵌套层级多的时候,某个子组件需要较远层级的父组件数据时候,如果我们依然使用props 传递数据,那么父组件的层级会越来越深,代码也会越来越复杂,这个传输的链路太长,如果中间出现差错,不容易排查。这时候就可以使用provide 和 inject 来解决这个问题。
如图:
请添加图片描述

而当我们使用provide 和 inject 的时候,就可以像下面这样使用:
一个父组件可以为所有的后代组件提供数据依赖,任何后代无论层级多么深,都可以注入由父组件提供给链路的依赖。
请添加图片描述

2、依赖注入固定值及响应数据

如下代码实现:vue2中

固定值的时候是非响应式的
如图:
在这里插入图片描述

注意:vue2中provide和inject 注入依赖孙子组件中的数据是非响应式的;
如果响应实现响应式,需要使用

<template>
<div class="par">
  <h3>provide--inject</h3>
  父组件--pName:{
   
   {
   
    msg }}
  <h3>provide--inject</h3>
 
  <Provide></Provide>
  <button @click="handleChangeName">change name</button>
  </div>
</template>
<script>
import Provide from './components/provide1.vue'
import {
   
    computed } from 'vue'
export default {
   
   
  name: 'App',
  components: {
   
   
    Provide
  },
  provide(){
   
   
    return {
   
   
      // pName: 'Andy' // 固定值;此时的pName是非响应式的
      pName: computed(() => this.msg) // 传入计算属性,再次更改msg的值,会发现孙子组件里面的值同步更新了,此时的pName是响应式的
    }
  },
  data() {
   
   
    return {
   
   
      msg: 'Welcome Andy'
    }
  },
  created() {
   
   
    console.log('app created'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刺客-Andy

努力将爱好变成更有价值的事物

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值