本节视频的几个问题

本节视频的几个问题

1、老师建共用的组件,为什么都要先建一个文件夹,下面再放一个index.vue文件,而不是直接新建文件xxx.vue就好了?


2、如下图所示,这里有一个arrList,导入的v-course组件中也有一个arrList,这两个变量放在同个页面中不会冲突吗?

http://img1.sycdn.imooc.com//climg/5fd1a92e09390d9e07290275.jpg


3、这里的这个array什么意思?指定该变量的类型是数组吗?

http://img1.sycdn.imooc.com//climg/5fd1a971097118dd05860291.jpg

是不是等同于下面这种写法:

props: {
    arrList: {
        type: Array,
        default: []
    }
}​

正在回答

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

2回答

同学你好,问题解答如下:

1.不会的。每一个组件都是独立的,组件与组件之间的数据不会互相影响。即使一个组件在另一个组件中调用,父子之间的数据也不会互相影响。这点记一下哦~

2.直接把子组件的代码放在父组件这种思想是不对的。如果直接把代码放在父组件中,那么代码是父组件中的内容,与子组件没有任何关系了。即父组件中使用的arrList是同一个数据,也就是父组件中,data里面定义的arrList。data中定义的数据就相当于一个变量,本身就可以多次使用的,没有影响哦。

http://img1.sycdn.imooc.com//climg/5fd1eb250966e3e405720548.jpg

3.如果同学还是不太理解,老师拿函数做一个比喻,如下:

两个函数都定义了相同的变量a,那么即使Child是在Par中调用的,两个变量a也不会互相影响。

http://img1.sycdn.imooc.com//climg/5fd1ecef093336df04200315.jpg

所以每一个函数中,输出函数各自定义的a:

http://img1.sycdn.imooc.com//climg/5fd1ed2109a35cea01930088.jpg

但如果你把Child中使用变量a的代码放在了Par中,那么这段代码就和Child没有任何关系了,如下:

http://img1.sycdn.imooc.com//climg/5fd1ed77099ea9c705890376.jpg

而变量本身就可以多次使用的,不管你输出多少次a,都不会有冲突啊,因为只是对上面变量a的使用,使用多少次都没有关系:

http://img1.sycdn.imooc.com//climg/5fd1edae0941f68801450091.jpg

再理解一下哦。

祝学习愉快~

  • 人生的起源 提问者 #1
    拿函数作比喻这个就很容易理解,谢谢
    2020-12-10 18:02:18
好帮手慕夭夭 2020-12-10 14:33:16

同学你好,问题解答如下:

1.不创建文件夹也可以,换句话说,你可以把整个项目的组件都放在一起。但从实际开发的情况看,一个项目包含的组件非常多,如果都放在一起,肯定不方便我们查找和管理。这个时候我们就可以根据不同的组件分类,创建对应的文件夹。共用的组件也是一样的,可能一个项目中会包含很多共用的组件,那么创建一个文件夹单独管理这些组件肯定是好的。

当然了,老师这样去创建,并不是说工作中就必须这样去做。创建文件夹并没有什么硬性的要求和规定,每一个人的开发习惯也是不一样的。但是总的来说,随着我们开发经验的积累,慢慢就会发现,一个项目中文件夹分类分的越细,越能帮助我们管理这些文件。同学自己在学习时,建议跟着老师去做,学习一下老师的开发习惯。等以后你的技术提升了,也可以慢慢形成自己的一套开发标准和习惯哦。

2.不会的,如下中,第一个arrList是data中定义的数据,第二个arrList,是绑定的一个属性。它们两个不会有冲突的。

http://img1.sycdn.imooc.com//climg/5fd1bd700986a0d506840322.jpg

除非你在data中又定义了一个同名的arrList,才会与第一个arrList有冲突哦。

http://img1.sycdn.imooc.com//climg/5fd1be01098ddb2106620265.jpg

3.理解的不对,arrList:Array只是规定了arrList的类型是数组,并没有规定默认值。如果父组件没有传值,arrList:Array,就会默认赋值为undefined。如果添加了default: [],父组件没有传值,就会为arrList设置默认值为空数组了。所以arrList:Array只是设置了type: Array哦。

祝学习愉快~

  • 提问者 人生的起源 #1

    回复老师第2点:
    虽然<v-course :arrList="array"></v-course>里面的arrList是属性,但是在v-course这个组件里面,它也是写成:
    <ul class="c-course">
        <li v-for="item in arrList">
            <img :src="item.imgUrl" />
            <h1>{{item.title}}</h1>
            <p>{{item.msg}}</p>
        </li>
    </ul>
    这里的arrList就是老师所说的数据了,当v-course组件导进来的时候,这两个不就冲突了?

    2020-12-10 14:40:28
  • 提问者 人生的起源 #2

    我直接把导入的代码写进去,不用组件的形式,老师看看:
    <template>
        <div class="home-page">
            <v-header></v-header>

            <ul class="nav">
                <li v-for="item in arrList">
                    <img v-bind:src="item.imgUrl" />
                    <span>{{item.name}}</span>
                </li>
            </ul>

            <ul class="c-course">
                <li v-for="item in arrList">
                    <img :src="item.imgUrl" />
                    <h1>{{item.title}}</h1>
                    <p>{{item.msg}}</p>
                </li>
            </ul>
        </div>
    </template>
    这里不就有两个的arrList,这两个不会冲突吗?

    2020-12-10 14:43:01
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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