react中轮播图设置

本文介绍了如何在React应用中创建一个轮播图组件。通过使用`useEffect`和`useState`钩子来获取和设置轮播图数据,并利用定时器实现自动切换。同时,还实现了手动切换和小圆点指示器的功能。
摘要由CSDN通过智能技术生成

import React, { useEffect, useState } from 'react'

import { Link } from 'react-router-dom'

import { carouselSelect } from '../service'

export default function Swiper() {

  let [carouselItem, setCarouselItem] = useState([])

  useEffect(() => {

    (async () => {

      let data = await carouselSelect()

      // console.log(data);

      setCarouselItem(data)

     

    })()

  }, [])

  // 轮播图下标

  let [cur,setCur]=useState(0)

 // 启用定时器 切换下一个广告

  useEffect(()=>{

    let timer=null

    if(carouselItem.length>0){

      setInterval(()=>{

        let i=cur+1

        i=i>carouselItem.length-1?0:i

        setCur(i)

        cur=i

      },5000)

    }

    return ()=>{

      clearInterval(timer)

      timer=null

    }

  },[carouselItem])

  let prev=()=>{

    let i=cur-1

    i=i<0?carouselItem.length-1:i

    setCur(i)

  }

  let next=()=>{

    let i=cur+1

    i=i>carouselItem.length-1?0:i

    setCur(i)

  }

  return (

    <div className="banner">

      {/* 图片列表*/}

      <ul>

      {carouselItem.map((c,i)=>(

          <li key={i} style={{

            background: `url(${c.pic}) center 0 no-repeat`,

            display:cur===i?'block':'none',

            zIndex: cur===i?10:20}}>

            <Link to={c.href} className="link"></Link>

          </li>))}

      </ul>

      {/* 左右箭头*/}

      <span  onClick={prev} className="cut prev"></span>

      <span onClick={next} className="cut next"></span>

        {/* 小圆点指示器*/}

        <div className="indicator">

          {carouselItem.map((c,i)=>{

            <Link key={i} onClick={()=>setCur(i)} className={cur===i?'cur':'undefined'}></Link>

          })}

        </div>

    </div>

  )

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值