uni-app实现小程序中轮播图功能展示

 效果图如下:

一、请求轮播图数据

实现步骤:

1、在data中定义轮播图的数组

2、在onLoad生命周期函数中调用获取轮播图数据的方法

3、在methods中定义获取轮播图数据的方法

源码如下:

<script>
    export default {
        data() {
            return {
                //轮播图的数据列表
                swiperList:[]
            };
        },
        onLoad() {
            //页面加载时调用方法,获取轮播图的数据
            this.getSwiperList()
        },
        methods: {
            async getSwiperList(){
                const {data:res} = await uni.$http.get('/api/public/v1/home/swiperdata')
                //请求失败
                if(res.meta.status !==200){
                    return uni.showToast({
                        title:'数据请求失败',
                        duration:1500,
                        icon:'none'
                    })
                }
                this.swiperList = res.message
            }
        }
    }
</script>

二、渲染轮播图的UI结构

1、渲染UI结构

<template>
    <view>
        <!-- 轮播图的UI结构 -->
        <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
            <swiper-item v-for="(item,i) in swiperList" :key="i">
                <view class="swiper-item">
                    <image :src="item.image_src"></image>
                </view>
            </swiper-item>
        </swiper>
    </view>
</template>

2、美化UI结构

<style lang="scss">
    swiper{
        height: 330rpx;
        .swiper-item,image{
            width: 100%;
            height: 100%;
        }
    }    
</style>

三、配置小程序分包

 分包可以减少小程序首次启动时的加载时间

在项目中,我们把tabbar相关的4个页面放到主包中,把其他页面,比如商品详情页,商品列表页面放在分包里面。

在uni-app项目中,配置分包的步骤如下:

1、在项目根目录中,创建分包的根目录,命名为subpkg

2、在pages.json中,和pages节点平级的位置声明subPackages节点,用来定义分包相关的结构:

    "subPackages": [
        {
            "root": "subpkg",
            "pages": [
                
            ]
        }
    ]

3、在subpkg目录上鼠标右键,点击新建页面选项,并填写页面的相关信息:

四、点击轮播图跳转到商品详情页面

 将<swiper-item></swiper-item>节点内的view组件,改造为navigator导航组件,并动态绑定url属性的值。

1、改造之前的UI结构

        <!-- 轮播图的UI结构 -->
        <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
            <swiper-item v-for="(item,i) in swiperList" :key="i">
                <view class="swiper-item">
                    <image :src="item.image_src"></image>
                </view>
            </swiper-item>
        </swiper>

2、改造之后的UI结构

        <!-- 轮播图的UI结构 -->
        <!-- 轮播图的UI结构 -->
        <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
            <swiper-item v-for="(item,i) in swiperList" :key="i">
                <navigator class="swiper-item" :url="'/subpkg/goods_detail/goods_detail?goods_id='+item.goods_id">
                    <image :src="item.image_src"></image>
                </navigator>
            </swiper-item>
        </swiper>

五、封装uni.$showMsg()方法

当数据请求失败之后,经常需要调用uni.showToast({/*配置对象*/})方法来提示用户。此时,可以在全集封装一个uni.$showMsg()方法,来简化uni.showToast()方法的调用。具体的改造步骤如下:

1、在main.js中,为uni对象挂在自定义的$showMsg()方法:

//封装弹框的方法
uni.$showMsg = function(title = '数据请求失败!', duration = 1500) {
    uni.showToast({
        title: '数据请求失败',
        duration: 1500,
        icon: 'none'
    })
}

2、今后,在需要提示消息的时候,直接调用uni.$showMsg()方法即可:

async getSwiperList() {
                const { data: res } = await uni.$http.get('/api/public/v1/home/swiperdata')
                //请求失败
                if (res.meta.status !== 200) {
                    return uni.$showMsg()
                }else{
                    this.swiperList = res.message
                    uni.$showMsg('数据请求成功!')
                }
            }

猜你喜欢

转载自blog.csdn.net/cui137610/article/details/143025182