Vue prop 传值和 provide→inject传值的区别总结

应用场景

prop传值是平常Vue父子组件之间主要传值的方式,并且这是响应式的。但是,如果你有个应用嵌套了多层组件,然后多个子组件需要用到父组件的某个值,这个时候通过provide→inject的方式是比较方便的。

//父组件
<template>
    <div>
        <componentA></componentA>
    </div>
</template>

<script>
    // @ is an alias to /src
    import componentA from '../components/componentA'
    export default {
        name: 'home',
        data() {
            return {
                name: 'wcx'
            }
        },
        provide() {
            return {
                name: name
            }
        },
        components: {
            componentA,
        }
    }
</script>
//子组件
<template>
    <div>
        componentA<input type="text" value="name">
        <componentB></componentB>
    </div>
</template>
<script>
    import componentB from './componentB';
export default {
    name: 'componentA',
    inject: ['name'],
    components: {
        componentB
    }
}
</script>
<style lang="">
    
</style>
// 孙子组件
<template>
    <div>
        componentB{{name}}
        <input type="text" value="name">
    </div>
</template>
<script>
export default {
    name: 'componentB',
    inject: ['name']
}
</script>
<style lang="">
    
</style>

结果图:

image

总结

prop:

优点: 响应式
缺点: 递归传值比较麻烦

provide→inject:

优点: 递归传值比较容易
缺点: 非响应式

【完】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容