使用react+swiper实现简单的banner效果

React + swiper 的 banner

import React from 'react'

import Swiper from 'swiper'

const Item = ( props ) => { 
  //props.item.src
  //props.src
  return (
    <div className="swiper-slide">
      <img src = { props.src }/>
    </div>
  )
}

class Banner extends React.Component{

  constructor () {
    super()
    this.state = {
      banners: []
    }
  }

  renderItem = () => {
    return this.state.banners.map( ( item ) => {
      return <Item { ...item } key = { item.id }></Item>
      // return <Item item = { item }></Item>
    })
  }

  render () {
    return (
      <div className="swiper-container" ref = { el => this.swiper = el}>
          <div className="swiper-wrapper" >
              { this.renderItem()  }
          </div>
          <div className="swiper-pagination"></div>
          
          <div className="swiper-button-prev"></div>
          <div className="swiper-button-next"></div>
          
          <div className="swiper-scrollbar"></div>
      </div>
    )
  }

  componentDidMount () {
    fetch ( '/data.json' )
      .then( res => res.json() )
      .then( data => {
        
        this.setState({
          banners: data
        })
        /* 
          方案二
        */
        setTimeout ( () => {
         this.swiperObj = new Swiper ( this.swiper, {
           loop: true, // 循环模式选项
           
           // 如果需要分页器
           pagination: {
             el: '.swiper-pagination',
           },
           
           // 如果需要前进后退按钮
           navigation: {
             nextEl: '.swiper-button-next',
             prevEl: '.swiper-button-prev',
           },
           
           // 如果需要滚动条
           scrollbar: {
             el: '.swiper-scrollbar',
           }
         },0)
        })
      })
      .catch( error => {
        if( error ) throw error 
      })

  }

  componentDidUpdate () {

    /* 
      方案一

    */

    if( this.swiper ) return false

    // this.swiperObj = new Swiper ( this.swiper, {
    //   loop: true, // 循环模式选项
      
    //   // 如果需要分页器
    //   pagination: {
    //     el: '.swiper-pagination',
    //   },
      
    //   // 如果需要前进后退按钮
    //   navigation: {
    //     nextEl: '.swiper-button-next',
    //     prevEl: '.swiper-button-prev',
    //   },
      
    //   // 如果需要滚动条
    //   scrollbar: {
    //     el: '.swiper-scrollbar',
    //   }
    // })
  }

}

export default Banner
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值