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
}

浙公网安备 33010602011771号