如何使用反应完成一个图片轮播组件

  介绍

这篇文章将为大家详细讲解有关如何使用反应完成一个图片轮播组件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

,,,,,,,,,,,,,,,,,,,,,,,,,,,,这次给大家带来用反应完成一个图片轮播组件,使用反应完成一个图片轮播组件的注意事项有哪些,下面就是实战案例,一起来看一下。

如何使用反应完成一个图片轮播组件

使用反应实现上述功能,首先,划分组件:

& lt; SlideMS>, & lt; SlideM/比;   ,& lt;幻灯片/祝辞& lt; SlideMS/祝辞

组件SlideM代表中图组件,其始终维护一个状态:currentMIndex,即当前的中图图片的索引值。
组件幻灯片代表小图组件,要维护两个状态:currentSIndex, currentSPage,即当前的小图图片的索引值和小图当前的页数;

外层组件SlideMS接受几个参数作为道具:

& lt; SlideMS ,,,, mediumImageArr={mediumImageArr},,,, eachMediumImgWidth =, {616},,,, smallImageArr={smallImageArr},,,,, eachSmallImgWidth =,{82}/祝辞,,. getelementbyid (& # 39; js-img-slide& # 39;));   SlideM、幻灯片再从SlideMS中获取参数进行内部渲染。   & lt; SlideM ,,,, mediumImageArr={mediumImageArr},,,, currentMIndex={currentMIndex},,,, eachMediumImgWidth =, {eachMediumImgWidth},,,,回调={(指数)=祝辞{self.setSmallIndex(指数)}},/祝辞& lt; SlideS ,,,,, smallImageArr={smallImageArr},,,,,, currentSIndex={currentSIndex},,,,,, eachSmallImgWidth={eachSmallImgWidth},,,,,, eachMediumImgWidth =, {eachMediumImgWidth},,,,,,回调={(指数)=祝辞{self.setMediumIndex(指数)}}/祝辞

当点击中图的切换按钮时,计算图片偏移量,然后将新的currentMIndex传递给父组件,父组件设置状态通知两个子组件currentMIndex发生了改变;

小图组件中涉及的计算比较多,可以将这些抽成方法,例如:根据给定的中图宽度计算一页有几张小图,计算小图总页数,根据给定的索引值判断小图处于当前哪一页等。

当点击小图组件的左右箭头时,计算图片的偏移量(首先计算一张中图里有几张小图),然后设置状态修改小图currentSPage的值。父组件设置状态通知两个子组件currentMIndex发生了改变;

中图,小图组件分别在componentWillReceiveProps里接收到了新的值的改变后,重新设置状态,更新组件内部的状态,就实现了两者之间的通信。

以上是实现的一个思路。在实际应用中,场景会复杂一些,例如,第一张图片可能存在播放视频的需求,还有当点击中图图片时,能切换到大图模式,大图模式下能正常轮播,并且在关闭大图模式时,中图和小图自动定位到刚才最后一张浏览的图片。这时会涉及稍微复杂一些的运算,需要在此基础上做一下兼容。

非常尴尬的一点:图片轮播时的动画效果,依旧使用了jquery的动画。

以上就是用反应完成一个图片轮播组件的详细内容,更多请关注其它相关文章!

关于“如何使用反应完成一个图片轮播组件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

如何使用反应完成一个图片轮播组件