前端项目-05-轮播图banner和Floor组件开发-全局轮播图组件抽取

目录

1-轮播图模块数据开发

2-floor组件开发

3-抽取全局轮播图组件


1-轮播图模块数据开发
 

轮播图需要用到swiper插件,先安装5.4.5版本的swiper:
npm  install --save swiper@^5.4.5 --force

模拟从服务器获取数据;
1-编写mockRequests的js文件和之前编写的request的js文件类似,就修改一下baseURL,我们模拟的数据请求路径约定为/mock开头

2-src/api/index.js中引入mockRequest.js并且对外保留方法

3-找到对应的组件/页面,在页面加载过程中派发action获取轮播图数据

4-因为轮播图在home模块,所以去store/home去真正获取数据,存取数据

5-组件页面数据获取,循环遍历数据

6-swiper组件的使用
安装swiper插件:npm  install --save swiper@^5.4.5 --force
文件引入src\pages\home\listContainer\index.vue;import Swiper from 'swiper';
main.js中引入样式【因为swiper样式在其他页面/组件也需要使用】,import 'swiper/css/swiper.css';
通过watch+nextTick()函数实现轮播图展示效果
 

 

 ps:
(1)我们不能将new Swiper放入到mounted中,因为mounted是页面加载完成展示,但是我们是通过axios异步请求服务端获取数据而且还v-for循环获取数据(也要耗时),页面结构没有完全加载完成,会导致轮播图功能显示不全;
(2)所以通过watch+nextTick()实现此功能;
(3) swiper对象里面pagination属性clickable:true,默认是false,点击轮播图下面小圆点实现图片动态展示需要用到这个属性;
(4)document.querySelector(".swiper-container")可以使用ref来代替
...

 

2-floor组件开发
 

获取floor的数据,
1-api中定义接口请求;2-页面派发action;3-vuex中请求和store数据;4-页面拿到服务端的数据展示;
注意:页面派发action是哪个页面派发?因为home页面需要展示两次,所以只能再home组件发送请求,不能在floor组件发action;home和floor是父子关系;



 

 

home组件中派发action:

 

home仓库中store数据(floor是home的字组件)

 

 

循环遍历数据:

 

ps:
(1)v-for标签也可以在自定义组件中使用
(2)现在是在home组件中显示两个floor,但是home中的数据需要传输到floor组件中,需要父子组件通讯;
父子组件通讯:
props,

自定义事件:$on,$emit
全局事件总线:$bus 全能
插槽
vuex

父组件中自定义属性list:

 

子组件接受父组件的数据:

 

子组件展示数据:

 

 

ps:(1)swiper使用步骤:引入swiper,引入swiper样式,new swiper实例
(2)注意floor轮播图这边,这里在mounted中使用swiper就没有首页banner中的mounted中使用swiper问题;因为floor的mounted中并没有派发action获取数据,floor中的数据都是从父组件home中发起请求传递过来的,所以这里的swiper可以直接使用

 

3-抽取全局轮播图组件

 

       首页的轮播图再几个地方使用,我们拆分为公用组件(全局组件),注册一次,就可以直接使用。现在在首页的banner在watch中实例化swiper,目前floor中在mounted中实例化swiper;我们先要改造floor中的结构,这样结构类似,我们方便抽取...

全局组件我们都放到src/components/ 文件夹下;

<template>
    <div class="swiper-container" id="floor1Swiper" ref="cur">
    <div class="swiper-wrapper">
        <div class="swiper-slide" v-for="carousel in list" :key="carousel.id">
            <img :src="carousel.imgUrl" />
        </div>
    </div>
    <!-- 如果需要分页器 -->
    <div class="swiper-pagination"></div>

    <!-- 如果需要导航按钮 -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
    </div>
  
</template>

<script>
import Swiper from 'swiper'
export default {
    name:'Carousel',
    props:['list'],
    //floor这里watch监听不到list数据变化,因为list是父组件传递过来的,是不变的...需要使用immediate属性
    watch:{
        list:{
            //不管数据有没有变化,立即监听
            immediate:true,
            handler(newValue,oldValue){
                this.$nextTick(()=>{
                    var mySwiper = new Swiper (
                        this.$refs.cur, 
                        {
                            loop: true, // 循环模式选项    
                            // 如果需要分页器
                            pagination: {
                                el: '.swiper-pagination',
                                clickable:true
                            },    
                            // 如果需要前进后退按钮
                            navigation: {
                                nextEl: '.swiper-button-next',
                                prevEl: '.swiper-button-prev',
                            },
                        })   
            });
        }
    }
  }
}
</script>

<style>

</style>



 

 

main.js中注册全局组件:

 

使用全局组件:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Android中,可以使用第三方库来实现轮播图效果,其中一个常用的库是Banner。在使用Banner库时,可以通过设置一些属性来自定义轮播图的效果。例如,可以设置轮播间隔时间、轮播图的圆角等属性。\[1\] 此外,还可以设置轮播图的样式,内置样式有多种可供选择,可以根据需求进行设置。可以设置片的加载方式,设置片的网址或地址集合,设置轮播图的标题集合等。还可以设置是否自动轮播、显示器的位置等。\[2\] 如果想要实现一个简单的轮播图效果,可以使用Banner框架提供的BannerImageAdapter适配器。可以通过设置适配器来加载轮播图的数据,并在适配器中设置片的显示方式。\[3\] 总结起来,使用Banner库可以方便地实现Android中的轮播图效果,通过设置属性和适配器来自定义轮播图的样式和数据。 #### 引用[.reference_title] - *1* *3* [Android---Banner轮播图](https://blog.csdn.net/qq_44950283/article/details/128390186)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Android入门Banner轮播图的使用(详解)](https://blog.csdn.net/m0_53223811/article/details/122562021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值