vue3-provide和inject

144 阅读1分钟

一、定义

父组件向子组件传参:使用props

父组件向孙组件(子组件的子组件)传参:使用provide/inject,provide提供数据,inject使用数据

二、示例

父组件引用子组件,子组件引用孙组件

父组件

<template>
    <h1>父组件,{{name}}--{{price}}</h1>
    <son/>
</template>
<script>
import son from './son.vue'
import {reactive,toRefs,provide} from 'vue'
    export default{
        components:{son},
        setup(){
            let car=reactive({
                name:'宝马',
                price:'200'
            })
            provide('car',car)
            return{
                ...toRefs(car)
            }
        }
    }
</script>

子组件

<template>
    <h1>子组件</h1>
    <child/>
</template>
<script>
import child from './child.vue'
    export default{
        components:{child}
    }
</script>

孙组件

<template>
    <h3>孙组件,{{car.name}}--{{car.price}}</h3>
</template>
<script>
import {inject} from 'vue'
    export default{
        setup(){
            let car=inject('car')
            return{
                car
            }
        }
    }
</script>