用React完成一个图片轮播组件

用React完成一个图片轮播组件
  使用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怎么调用,培训,工具,标准,管理,替代品,模块,以上,功能,更多,内容,p

    python井号怎么用

    python井号怎么用,培训,代码,注释,演示,上面,下面,以上,部分,更多,内容,注释

    python三引号怎么使用

    python三引号怎么使用,培训,代码,名字,引号,字符串,注释,下面,定义,以上,作

    python变量怎么使用

    python变量怎么使用,培训,信息,数字,变量,字母,空格,开头,关键字,意义,规则

    pythondef有什么作用

    pythondef有什么作用,代码,培训,名字,函数,括号,内部,定义,功能,作用,参数,p

    python怎么使用列表

    python怎么使用列表,位置,培训,公式,列表,元素,表示,末尾,切片,倒数,顺序,py

    python怎么用pip安装库

    python怎么用pip安装库,代理,培训,在线,通用,示例,格式,问题,管理工具,命

    pythonprint怎么用

    pythonprint怎么用,培训,数据,庞大,代码,变量,函数,语句,片段,文本,内存,pri

    pythonclass如何使用

    pythonclass如何使用,数据,培训,设计,类型,下标,成员,函数,使用方便,功能

    pythonstr函数怎么用

    pythonstr函数怎么用,培训,函数,字符串,整数,参数,列表,示例,初始化,变量,

    pythonprint怎么用

    pythonprint怎么用,培训,字符串,逗号,对象,语句,函数,文件,方法,下文,实例,

    python类什么时候用

    python类什么时候用,数据,地址,概念,培训,实例,下来,名称,方法,变量,参数,面

    pythonreturn用在哪里

    pythonreturn用在哪里,培训,函数,字符串,数值,使用说明,语句,定义,对象,以

    python库怎么调用

    python库怎么调用,培训,模块,代码,成员,别名,前缀,程序,语句,语法,上面,pyth

    python模块怎么使用

    python模块怎么使用,标准,培训,代码,模块,文件,程序,开发者,函数,例子,效率