Vue3 ts 组件传递数据给后代 provide inject

一、优点

给后代组件传递数据,且不打扰其它组件

父组件提供provide,后代组件注入inject

二、使用

1、父组件提供数据

注意:提供ref数据,不要带.value,带了就变成普通数据,不是响应式数据

provide('name', {xx1, xx2})

<template>
<Child2></Child2>
<div>资产:{{ money }}</div>

</template>

<script setup lang="ts" name="App">
import { provide, ref } from 'vue';
import Child2 from './components/Child2.vue';
let money = ref(-2000)
// ref 不要带.value,带了数据没有响应式
provide("money", money)
</script>

2、后代组件注入数据(操作数据)

注意:后代组件需要定义变量接收数据

<template>
  <div>子组件</div>
  <div>祖先的钱:{{ money }}</div>
  <button @click="changeMoney">修改祖先的钱</button>
</template>

<script setup lang="ts" name="Child2">
import { inject } from 'vue';

let money = inject("money")
function changeMoney(){
    money.value += 1
}

 

posted @ 2025-03-18 13:31  市丸银  阅读(40)  评论(0)    收藏  举报