---
description: "小程序轮播图组件使用指令"
---
```tsx
import { View } from '@tarojs/components'
import { Carousel, CarouselItem } from './carousel'
import { useState } from 'react'
import Taro from '@tarojs/taro'
// 示例1:基础用法
export function BasicCarouselExample() {
const items: CarouselItem[] = [
{
src: 'https://picsum.photos/400/200?random=1',
title: '第一张轮播图',
description: '这是第一张轮播图的描述文字'
},
{
src: 'https://picsum.photos/400/200?random=2',
title: '第二张轮播图',
description: '这是第二张轮播图的描述文字'
},
{
src: 'https://picsum.photos/400/200?random=3',
title: '第三张轮播图',
description: '这是第三张轮播图的描述文字'
}
]
return (
基础轮播图
)
}
// 示例2:自定义配置
export function CustomCarouselExample() {
const items: CarouselItem[] = [
{
src: 'https://picsum.photos/400/300?random=4',
title: '精选商品',
description: '限时优惠,立即抢购'
},
{
src: 'https://picsum.photos/400/300?random=5',
title: '新品上市',
description: '最新款式,引领潮流'
},
{
src: 'https://picsum.photos/400/300?random=6',
title: '特价促销',
description: '全场5折起,不容错过'
}
]
return (
自定义配置轮播图
{
console.log('点击了第', index + 1, '张轮播图:', item.title)
}}
onChange={(current) => {
console.log('切换到第', current + 1, '张')
}}
/>
)
}
// 示例3:无指示器轮播
export function NoIndicatorsCarouselExample() {
const items: CarouselItem[] = [
{
src: 'https://picsum.photos/400/150?random=7',
link: '/pages/product/1'
},
{
src: 'https://picsum.photos/400/150?random=8',
link: '/pages/product/2'
},
{
src: 'https://picsum.photos/400/150?random=9',
link: '/pages/product/3'
}
]
return (
无指示器轮播图
)
}
// 示例4:圆形指示器轮播
export function CircularIndicatorsCarouselExample() {
const items: CarouselItem[] = [
{
src: 'https://picsum.photos/400/250?random=10',
title: '活动预告'
},
{
src: 'https://picsum.photos/400/250?random=11',
title: '会员专享'
},
{
src: 'https://picsum.photos/400/250?random=12',
title: '积分兑换'
},
{
src: 'https://picsum.photos/400/250?random=13',
title: '限时秒杀'
}
]
return (
圆形指示器轮播图
)
}
// 示例5:顶部指示器轮播
export function TopIndicatorsCarouselExample() {
const items: CarouselItem[] = [
{
src: 'https://picsum.photos/400/180?random=14',
title: '顶部指示器',
description: '指示器位于顶部'
},
{
src: 'https://picsum.photos/400/180?random=15',
title: '美观设计',
description: '简洁优雅的界面'
},
{
src: 'https://picsum.photos/400/180?random=16',
title: '用户体验',
description: '流畅的交互体验'
}
]
return (
顶部指示器轮播图
)
}
// 综合示例:轮播图页面
export function CarouselDemoPage() {
const [currentExample, setCurrentExample] = useState(0)
const examples = [
{ title: '基础用法', component: BasicCarouselExample },
{ title: '自定义配置', component: CustomCarouselExample },
{ title: '无指示器', component: NoIndicatorsCarouselExample },
{ title: '圆形指示器', component: CircularIndicatorsCarouselExample },
{ title: '顶部指示器', component: TopIndicatorsCarouselExample }
]
const CurrentComponent = examples[currentExample].component
return (
轮播图组件示例
{/* 切换示例 */}
{examples.map((example, index) => (
setCurrentExample(index)}
>
{example.title}
))}
{/* 使用说明 */}
使用说明
• 支持自动播放和手动切换
• 可自定义指示器位置和样式
• 支持点击事件和切换回调
• 内置图片懒加载和错误处理
• 响应式设计,适配不同屏幕尺寸
)
}
// 实际页面使用示例
export function HomeCarousel() {
const bannerItems: CarouselItem[] = [
{
src: 'https://via.placeholder.com/750x400/3B82F6/FFFFFF?text=Banner+1',
title: '新品上市',
description: '最新款式,限时优惠',
link: '/pages/goods/new-arrival'
},
{
src: 'https://via.placeholder.com/750x400/EF4444/FFFFFF?text=Banner+2',
title: '限时秒杀',
description: '每日特价,不容错过',
link: '/pages/goods/flash-sale'
},
{
src: 'https://via.placeholder.com/750x400/10B981/FFFFFF?text=Banner+3',
title: '会员专享',
description: '会员专享折扣和福利',
link: '/pages/member/benefits'
}
]
const handleBannerClick = (item: CarouselItem, index: number) => {
if (item.link) {
// 使用Taro跳转
Taro.navigateTo({
url: item.link
})
}
}
return (
)
}
```