• vue provide/inject 父组件如何给孙子组件传值


    • 一般情况下我们父子组件之间的传值用的是props
    • 如果想让父组件,向子组件的子组件,也就是孙子组件传值,可以用provide和inject(依赖注入),当然provide/inject也支持父子组件的传值
    1. provide/inject需要一起使用,我们可以从父组件的provide传值,子组件或者孙组件,就可以用inject来接受子组件的provide属性值
    2. 具体的可以看官网介绍provide/inject

    以下用例可以测试下:

    1. 父组件parent,我们在里面引入了一个子组件provideChild

    provide必须是个对象inject的绑定值才可以响应,那么我们可以试一试

    <template>
        <div>
            <button @click="add">点击增加</button>
            <provideChild/>
        </div>
    </template>
    <script>
    import provideChild from '@/components/provideChild'
    export default {
        components:{provideChild},
        data () {
            return {
                fooObj:{
                    foo:5
                }
            }
        },
        //依赖注入传值
        provide(){
            return{
                newFoo:this.fooObj
            }
        },
        methods:{
            add(){
                this.fooObj.foo ++
            },
        }
    }
    </script>

    2. 子组件provideChild,我们同时又在子组件里面引入了一个他的子组件

    我们可以看到他的打印出注入的newFoo值是5

    //子组件provideChild
    <template>
    <section>
        <div>我是子组件:{{newFoo.foo}}</div>
        <childChild/>
    </section>
    </template>
    <script>
    import childChild from '@/components/childChild'
    export default {
        components:{
            childChild
        },
        inject:['newFoo'],
        mounted(){
            console.log(this.newFoo)
        },
        
    }
    </script>

    3. 孙子组件childChild,是子组件的组件

    <template>
        <div>我是子组件的组件:{{newFoo}}</div>
    </template>
    <script>
    export default {
        inject:['newFoo'],
    }
    </script>

    参考:https://www.cnblogs.com/yhhbky/p/11725476.html

    你好,我是Jane,如果万幸对您有用,请帮忙点下推荐,谢谢啦~另外,咱们闪存见哦~
  • 相关阅读:
    数组作为函数参数传递时
    Tree 笨方法实现
    双向链表
    带头节点的循环链表及两个循环链表的合并
    josephus问题->不带头节点的循环链表
    数组形式链表
    检测qq是否在线
    Python-requests模块
    Python面向对象练习——基于面向对象设计一个对战游戏
    Python-面向对象
  • 原文地址:https://www.cnblogs.com/jane-panyiyun/p/14681635.html
Copyright © 2020-2023  润新知