码迷,mamicode.com
首页 > 其他好文 > 详细

HomeSwiper、RecommendView和FeatureView组件的使用

时间:2021-06-19 18:54:50      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:isl   ref   相关   通过   src   需要   rgba   https   lin   

HomeSwiper是本项目的轮播图组件,它使用了两个现成的组件Swiper和SwiperItem,前者是对播放容器的设置,后者是对播放项目的设置。

我们直接使用Swiper组件,在其内部通过v-for动态创建若干个SwiperItem,每个SwiperItem都是一张超链接图片。需要展示的图片存放在数组banners中,它由父组件Home传入。

<swiper>
    <swiper-item v-for="(item, index) in banners" :key="index">
      <a :href="item.link">
        <img :src="item.image" alt="" @load="imgLoad"/>
      </a>
    </swiper-item>
  </swiper>

这里顺便复习一下父对子通信,在子组件的props选项中接受数据:

props: {
    banners: {
      type: Array,
      default(){
        return []
      }
    }
}

在父组件模板中使用子组件时,通过属性绑定的方式发送数据:

<home-swiper :banners="banners" @swiperImageLoad="swiperImageLoad"></home-swiper>

此外,我们注意到在轮播图图片上设置了load事件监听,这是因为图片文件较大,加载较慢,所以当希望获取页面高度时,必须等到图片全部加载完成后再取值,否则会出现闪烁和抖动。所以,当子组件中图片全部加载完成时,要将这个消息告知父组件:

imgLoad(){
      if(!this.isLoad){
        this.$emit(‘swiperImageLoad‘)
        this.isLoad = true
}

留意到轮播图的特点:图片数目的增加不会对页面高度造成影响,所以轮播图只需要加载完第一张,就可以向父组件通信了,这就是为什么上面代码中加了一层判断。

父组件收到消息后,会调用swiperImageLoad方法来执行一些操作,但具体内容就是关于其它组件的了。

 

轮播图下面的组件是RecommendView,它的实现与轮播图几乎完全相同,都是获取一个项目数组,然后遍历展示,只不过RecommendView中的图片是排成一行展示,且其下方有文字。RecommendView的展示内容为recommends数组,它同样由父组件传入。相关代码如下:

<div class="recommend">
    <div v-for="(item, index) in recommends" :key="index" class="recommend-item">
      <a :href="item.link">
        <img :src="item.image" alt=""/>
        <div>{{item.title}}</div>
      </a>
    </div>
  </div>
<recommend-view :recommends="recommends"></recommend-view>

 

再下面是FeatureView组件,它甚至称不上是一个组件,就是一张简单的图片,连相关的js代码都没有,也没什么可说的。

<div class="feature">
    <a href="https://act.mogujie.com/zzlx67">
      <img src="~assets/img/home/recommend_bg.jpg" alt="">
    </a>
  </div>
<feature-view></feature-view>

 

HomeSwiper、RecommendView和FeatureView组件的使用

标签:isl   ref   相关   通过   src   需要   rgba   https   lin   

原文地址:https://www.cnblogs.com/creationMarvel/p/14901611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!