多层组件传递问题

多层组件传递问题

 老师


第一个问题    说是多层组件传递 其实也就是提供了一个额外的值吧 

 把 template: `<div><child :count="count"/></div>`  中的 :count="count"去掉完全不影响 程序运行           inject也就是使用了provide提供的值

第二个问题  


<script>

    const app = Vue.createApp({

        data() {

            return {

               count: 1

            }

        },

        template: `<div><demo :count="count"/></div>`

    });

    app.component('demo', {

        template:`<demo1/>`

    });

    app.component('demo1', {

        template:`<demo2/>`

    });

    app.component('demo2', {

        props:['count'],

        template:`<div>{{count}}</div>`

    });

    const vm = app.mount('#root');

</script>

为啥demo2可以直接接收本该是demo接收的count啊

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2022-08-19 17:43:50

同学你好,解答如下:

1、视频中老师介绍的provide与inject是只针对同一条组件链上的传值方法,这里并不是提供了一个额外的值,同学可以参考--->官网的解释进行理解。

2、是因为使用props时会有透传的问题发生,这里需要引入inheritAttrs,如下:

https://img1.sycdn.imooc.com//climg/62ff5a4f0921fbc608640525.jpg

以上文字我们可以理解为如父传子,子组件没有做props接值,那么就会发生透传的问题。

这里我们按照同学所提供的例子来说:

https://img1.sycdn.imooc.com//climg/62ff5b0f09b2bdbd09890745.jpg

最终如下:

https://img1.sycdn.imooc.com//climg/62ff5b1f096c226006520346.jpg

关于inheritattrs、vue--->官网给出的解释同学可以点开看看。

祝学习愉快!

  • 提问者 ddxz #1

    <script>


        const app = Vue.createApp({


            data() {


                return {


                    count: 1


                }


            },

            provide: {

                cc: 3

            },

            template: `<div><demo :count="count"/></div>`


        });


        app.component('demo', {


            template: `<demo1/>`


        });


        app.component('demo1', {


            template: `<demo2/>`


        });


        app.component('demo2', {


            inject:['cc'],


            template: `<div>{{cc}}</div>`


        });


        const vm = app.mount('#root');


    </script>


    这里provide  cc传进去的值是3   最后组件inject cc用的值也是3  这不就是一个自定义的额外的值吗  非说绑住关系的话  就让cc=count就行了    :count="count" 写在这里根本没作用 删除了都行啊

    2022-08-19 18:07:51
  • 好帮手慕小李 回复 提问者 ddxz #2

    同学你好,对于理解层面上同学这么理解我觉得没问题。

    另建议用api的描述如下:

    https://img1.sycdn.imooc.com//climg/62ff6479099a3e8608660505.jpg

    祝学习愉快!

    2022-08-19 18:24:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师