2025-06-26vue学习

依赖注入(多层传递) provide和inject

父组件

import {provide} from 'vue'
provide('message',{name:'张三','age':'18'})
    //禁止修改数据
  //provide('message', readonly({name:'张三','age':'18'}))

孙子组件

<template>
   <div>
     <p> <span>姓名:{{ data.name }}</span></p>
     <p> <span>年龄:{{ data.age }}</span></p>
  </div>
</template>
<script setup>
import { inject } from 'vue';
const data = inject('message')
</script>

截图


image.png

和响应式数据配合使用(提供修改数据方法)

父组件

    const infor = {name:'张三',age:18};
    function changeAge() {
      infor.age = 19;
    }
    provide('infor', {infor,changeAge})

子组件

<div>
   <p> <span>姓名:{{ infor.name }}</span></p>
   <p> <span>年龄:{{ infor.age }}</span></p>
   <button @click="changeAge()">增加</button>
   </div>
<script setup>
import { inject } from 'vue';
const { infor, changeAge } = inject('infor')
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 3,232评论 0 5
  • 为了让我有一个更快速、更精彩、更辉煌的成长,我将开始这段刻骨铭心的自我蜕变之旅!从今天开始,我将每天坚持阅...
    李薇帆阅读 1,853评论 0 2
  • 似乎最近一直都在路上,每次出来走的时候感受都会很不一样。 1、感恩一直遇到好心人,很幸运。在路上总是...
    时间里的花Lily阅读 1,315评论 0 1
  • 1、expected an indented block 冒号后面是要写上一定的内容的(新手容易遗忘这一点); 缩...
    庵下桃花仙阅读 488评论 0 1
  • 一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具 【M】移动工具 【V...
    墨雅丫阅读 512评论 0 0