当前第2页 返回上一页
1 2 3 | <SlideMS mediumImageArr={mediumImageArr} eachMediumImgWidth = {616} smallImageArr={smallImageArr} eachSmallImgWidth = {82}/>, document.getElementById( 'js-img-slide' ));
SlideM、SlideS再从SlideMS中获取参数进行内部渲染。
<SlideM mediumImageArr={mediumImageArr} currentMIndex={currentMIndex} eachMediumImgWidth = {eachMediumImgWidth} callback={(index)=>{self.setSmallIndex(index)}} /><SlideS smallImageArr={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.
以上就是用React完成一个图片轮播组件的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
webstorm不识别React怎么办
React developer tools是什么?
你一定不知道div里的图片是如何水平垂直居中的
使用React native的好处是什么?
layui上传图片成功之后怎么预览成功的图片
React如何提高首屏加载速度
redux如何关联React?
React中什么叫子组件
浅谈angular中组件(@component)基本知识
React grommet是什么
更多相关阅读请进入《React》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 用React完成一个图片轮播组件