react-native 轮播组件 looped-carousel使用介绍
一 关于轮播类组件,网上其实已经有挺多了,本人曾经用过 swiper,viewpager,以及facebook出品的viewpagerAndroid。
swiper因在安卓上有问题,而且在组件嵌套使用时问题较多,所以弃用。
后来尝试viewpager,因为轮播时,下面的圆点显示有误,所以弃用。
而ViewpagerAndroid因为只支持安卓系统,所以很少用到,在ios必须另找组件。
最近发现了新的组件 react-native-looped-carousel ,看着还不错,于是介绍一下使用方法。
二 looped-carousel使用介绍
安装
npm install react-native-looped-carousel --save
属性
Name | propType | default value | description |
---|---|---|---|
autoplay | boolean | true | 是否自动轮播 |
delay | number | 4000 | 多少毫秒切换一次 |
currentPage | number | 0 | 设置初始页 |
pageStyle | style | null | 页面的样式 |
contentContainerStyle | style | null |
|
onAnimateNextPage | func | null | 切换轮播图时的回调方法 |
swipe | bool | true | 是否允许手势滑动也换页面 |
分页 | --- | --- | --- |
pageInfo | boolean | false | 是否在底部显示当前页面下标 / 页面个数 |
pageInfoBackgroundColor | string | 'rgba(0, 0, 0, 0.25)' | 分页的背景色 |
pageInfoBottomContainerStyle | style | null | pageInfo容器的样式 |
pageInfoTextStyle | style | null | pageInfo中的文本样式 |
pageInfoTextSeparator | string | ' / ' | 在 当前页面下标 和 页面个数 之间的分隔符 |
小圆点 | --- | --- | --- |
bullets | bool | false | 是否在轮播的底部显示小圆点 |
bulletStyle | style | null | bullet(小圆点)的样式 |
bulletsContainerStyle | style | null | style for the bullets container |
chosenBulletStyle | stlye | null | bullet的容器的样式 |
导航箭头 | --- | --- | --- |
arrows | bool | false | 是否显示轮播的导航箭头 |
arrowsStyle | style | null | 导航箭头的样式 |
arrowsContainerStyle | style | null | 导航箭头的容器样式 |
leftArrowText | string / element | 'Left' | 左箭头的文字或图片 |
rightArrowText | string / element | 'Right' | label / icon for right navigation arrow |
使用
import React, { Component } from 'react';import {
Text,
View,
Dimensions,
} from 'react-native';
import Carousel from 'react-native-looped-carousel';
const { width, height } = Dimensions.get('window');
export default class CarouselExample extends Component {
constructor(props) {
super(props);
this.state = {
size: { width, height },
};
}
_onLayoutDidChange = (e) => {
const layout = e.nativeEvent.layout;
this.setState({ size: { width: layout.width, height: layout.height } });
}
render() {
return (
<View style={{ flex: 1 }} onLayout={this._onLayoutDidChange}>
<Carousel
delay={2000}
style={this.state.size}
autoplay
pageInfo
onAnimateNextPage={(p) => console.log(p)}
>
<View style={[{ backgroundColor: '#BADA55' }, this.state.size]}><Text>1</Text></View>
<View style={[{ backgroundColor: 'red' }, this.state.size]}><Text>2</Text></View>
<View style={[{ backgroundColor: 'blue' }, this.state.size]}><Text>3</Text></View>
</Carousel>
</View>
);
}
}
以上是作者的使用事例,比较简单,下面我结合 它公开的属性来慢慢展开:
1.显示下面的分页个数的
<Carouseldelay={2000} //自动切换的延迟 (毫秒)
style={{width:375,height:200}} //轮播组件的样式
autoplay //自动轮播
pageInfo //在底部显示当前页面下标 / 页面个数
swiper //允许手势滑动
pageInfoBackgroundColor={'#fff'} //分页标示的背景色
onAnimateNextPage={(p) => console.log(p)} //切换页面时的回调
pageInfoTextStyle={{color:'blue'}} //下面字体样式
pageInfoTextSeparator={'!!!'} //中间的分隔符
>
{React.Children.map(['aa','bb','cc'],(child,index)=>{
return(
<View style={styles.container}>
<Text>{child+','+index}</Text>
</View>
)
})}
</Carousel>
看一下图,该项目是我平时写demo的,所以凌乱的动画请无视。。
2. 显示小圆点的
<Carouseldelay={2000} //自动切换的延迟 (毫秒)
style={{width: 375, height: 200}} //轮播组件的样式
autoplay //自动轮播
pageInfo={false} //在底部显示当前页面下标 / 页面个数
swiper //允许手势滑动
bullets={true} //显示小圆点
bulletStyle={{backgroundColor: '#fff', width: 5, height: 5}} //未选中时小圆点的样式
chosenBulletStyle={{backgroundColor: 'red', width: 5, height: 5}}//选中时小圆点的样式
arrows={true} //显示导航箭头
leftArrowText="left️" //左导航
arrowsContainerStyle={{paddingHorizontal:20}} //箭头容器样式
rightArrowText={<Animated.Image //右导航
style={{
transform: [{rotate: spin}],
height:20,
width:20
}}
source={require('./img/a.jpg')}/>}
>
{React.Children.map(['aa', 'bb', 'cc'], (child, index) => {
return (
<View style={styles.container}>
<Text>{child + ',' + index}</Text>
</View>
)
})}
</Carousel>
如图所示:
目前看上去还是很方便的,有需要的可以看一下啊~
以上是 react-native 轮播组件 looped-carousel使用介绍 的全部内容, 来源链接: utcz.com/z/384199.html