首页 / 知识
用React完成一个图片轮播组件
2023-04-11 15:13:00

使用React实现上述功能,首先,划分组件:
<SlideMS><SlideM/>
<SlideS/><SlideMS/>
组件SlideM代表中图组件,其始终维护一个state:currentMIndex,即当前的中图图片的index值。
组件SlideS代表小图组件,要维护两个state:currentSIndex,currentSPage,即当前的小图图片的index值和小图当前的页数;
外层组件SlideMS接受几个参数作为props:
<SlideMSmediumImageArr={mediumImageArr}eachMediumImgWidth={616}smallImageArr={smallImageArr}eachSmallImgWidth={82}/>,document.getElementById('js-img-slide'));
SlideM、SlideS再从SlideMS中获取参数进行内部渲染。
<SlideMmediumImageArr={mediumImageArr}currentMIndex={currentMIndex}eachMediumImgWidth={eachMediumImgWidth}callback={(index)=>{self.setSmallIndex(index)}}/><SlideSsmallImageArr={smallImageArr}currentSIndex={currentSIndex}eachSmallImgWidth={eachSmallImgWidth}eachMediumImgWidth={eachMediumImgWidth}callback={(index)=>{self.setMediumIndex(index)}}/>
当点击中图的切换按钮时,计算图片偏移量,然后将新的currentMIndex传递给父组件,父组件setState通知两个子组件currentMIndex发生了改变;
小图组件中涉及的计算比较多,可以将这些抽成方法,例如:根据给定的中图宽度计算一页有几张小图、计算小图总页数、根据给定的index值判断小图处于当前哪一页等。
当点击小图组件的左右箭头时,计算图片的偏移量(首先计算一张中图里有几张小图),然后setState修改小图currentSPage的值。父组件setState通知两个子组件currentMIndex发生了改变;
中图、小图组件分别在componentWillReceiveProps里接收到了新的值的改变后,重新setState,更新组件内部的state,就实现了两者之间的通信。
以上是实现的一个思路。在实际应用中,场景会复杂一些,例如,第一张图片可能存在播放视频的需求,还有当点击中图图片时,能切换到大图模式,大图模式下能正常轮播,并且在关闭大图模式时,中图和小图自动定位到刚才最后一张浏览的图片。这时会涉及稍微复杂一些的运算,需要在此基础上做一下兼容。
非常尴尬的一点:图片轮播时的动画效果,依旧使用了jquery的animate.
|
最新内容
相关内容
pythonpip怎么调用
pythonpip怎么调用,培训,工具,标准,管理,替代品,模块,以上,功能,更多,内容,pip是一个安装和管理Python包的工具,python安装包的工具有easy_inspython井号怎么用
python井号怎么用,培训,代码,注释,演示,上面,下面,以上,部分,更多,内容,注释在编程中是很重要的部分。它能告诉你这段代码是干什么用的,或者用python三引号怎么使用
python三引号怎么使用,培训,代码,名字,引号,字符串,注释,下面,定义,以上,作用,python中的三引号,3个单引号及3个双引号,通常用来换行书写代码,或python如何安装一个模块
python如何安装一个模块,培训,工具,模块,方式,文件夹,源码,本文,下面,以上,之后,下面介绍几种安装Python模块的几种方式easy_install方式先下python变量怎么使用
python变量怎么使用,培训,信息,数字,变量,字母,空格,开头,关键字,意义,规则,python中的变量主要是用来存贮信息的。message="HelloPythonworpythondef有什么作用
pythondef有什么作用,代码,培训,名字,函数,括号,内部,定义,功能,作用,参数,python使用def开始函数定义,紧接着是函数名,括号内部为函数的参数,内python怎么使用列表
python怎么使用列表,位置,培训,公式,列表,元素,表示,末尾,切片,倒数,顺序,python列表的简单操作1.在列表末尾添加元素:sth.append()2.在列表中python用哪个软件编写运行python
python用哪个软件编写运行python,软件,环境,代码,培训,服务,分析,工具,功能,程序,系列,编写和运行Python代码的软件叫IDE,也就是集成开发环境python函数嵌套时怎么调用
python函数嵌套时怎么调用,培训,函数,周期,变量,嵌套,作用,定义,里面,上层,也就是说,python允许创建嵌套函数。也就是说我们可以在函数里面定python帮助文档怎么使用
python帮助文档怎么使用,培训,文档,函数,模块,以下内容,参数,方法,以上,更多,内容,在python命令行中输入help(),然后再次输入time,可以获得很详python怎么用pip安装库
python怎么用pip安装库,代理,培训,在线,通用,示例,格式,问题,管理工具,命令,以上,pip是一个现代的,通用的Python包管理工具。提供了对Python包pythonprint怎么用
pythonprint怎么用,培训,数据,庞大,代码,变量,函数,语句,片段,文本,内存,print()函数python3中最重要的更改之一就是将print转变为函数,在pyth