ScrollView 的scrollIntoView 实现轮播效果
1.背景:
1.1 为什么不用taro原生的Swiper轮播组件
- 需要自定义轮播分页
- 通过onChange事件来获取当前current再来更新底部分页,后有一定延迟,效果不佳
- 元素选中与未选中要进行缩放
2. 具体实现
tsx
const [targetViewId, setTargetViewId] = useState<string>()
const testClick = () => {
setTargetViewId('test_1')
}
<Button onClick={testClick}>按钮</Button>
<ScrollView
scrollX
scrollY={false}
scrollWithAnimation
onScroll={handleTouchMove}
scrollIntoView={targetItemId}
>
{swiperList.map(()=>{
return (
<View
key={index}
id={`test_${index}`}
></View>
)
})}
</ScrollView>
按钮的点击事件可以,让当前视图平滑的滚动到一组图片的第二张图片中,scrollWithAnimation
属性也可以在滚动中添加缓慢的动画效果。我们也可以在handleTouchMove
事件中处理当前,展示的图片,以及与相应的css配合展示对应当前展示时样式和未展示时样式。