react-native封装插件swiper的使用方法


Posted in Javascript onMarch 20, 2018

首先创建简单的react-native项目,创建一个文件夹。然后用命令符输入

react-native init swiper

创建完成之后开发项目,我用的vs

react-native封装插件swiper的使用方法

打开控制台,安装swiper依赖。

安装:npm i react-native-swiper --save
查看:npm view react-native-swiper
删除:npm rm react-native-swiper --save
这里还需要 npm i 下更新下本地的依赖库

启动app项目

ios: react-native run-ios
android: react-native run-android

开始上码,在src里面创建个components文件夹下边创建个swiper.js文件,以及index.js,加上说明文档

react-native封装插件swiper的使用方法

import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { StyleSheet, TouchableWithoutFeedback, View } from 'react-native';
import RNSwiper from 'react-native-swiper';

const styles = StyleSheet.create({
 activeDotWrapperStyle: {
  //圆点样式
 },
 activeDotStyle: {
  //圆点样式
 },
 dotStyle: {
  //圆点样式
 }
});

const activeDot = (
 <View style={styles.activeDotWrapperStyle}>
  <View style={styles.activeDotStyle} />
 </View>
);
const dot = <View style={styles.dotStyle} />;

export class Carousel extends Component {
 // Define component prop list
 static propTypes = {
  data: PropTypes.array,
  height: PropTypes.number,
  onPressItem: PropTypes.func,
  renderItem: PropTypes.func.isRequired,
  autoplay: PropTypes.bool,
  autoplayTimeout: PropTypes.number
 };

 // Define props default value
 static defaultProps = {
  data: [],
  height: 150,
  autoplay: true,
  autoplayTimeout: 2.5,
  onPressItem: () => {},
  renderItem: () => {}
 };

 // Define inner state
 state = {
  showSwiper: false
 };

 constructor(props) {
  super(props);
  this.handleItemPress = this.handleItemPress.bind(this);
 }

 componentDidMount() {
  setTimeout(() => {
   this.setState({ showSwiper: true });
  });
 }

 handleItemPress(item) {
  this.props.onPressItem(item);
 }

 _renderSwiperItem(item, index) {
  return (
   <TouchableWithoutFeedback key={index} onPress={() => this.handleItemPress(item)}>
    <View style={[{ flex: 1 }]}>{this.props.renderItem(item)}</View>
   </TouchableWithoutFeedback>
  );
 }

 render() {
  return this.props.data.length === 0 || !this.state.showSwiper ? null : (
   <RNSwiper
    height={this.props.height} //图片高度
    activeDot={activeDot} 
    dot={dot}
    style={{ backgroundColor: '#fff' }}
    autoplay={this.props.autoplay} //是否自动轮播
    autoplayTimeout={this.props.autoplayTimeout} //轮播秒数
   >
    {this.props.data.map((item, idx) => this._renderSwiperItem(item, idx))} //如果数据是个对象里面的数组加一个循环
   </RNSwiper>
  );
 }
}

这是index.js文件

import { Carousel } from './carousel/Carousel';

export { Carousel };

公共组件库

这里用于放置与业务无关的公共组件。组件实现必须考虑灵活性,扩展性,不能包含具体的业务逻辑。

组件必须以 你做的业务命名 为前缀,如 TryCarousel.js 。每个组件必须单独放在目录中,目录必须全小写(中横线分割),如 carousel/TryCarousel.js 。

一个基本的组件结构:

import PropTypes from 'prop-types';
import React, { Component } from 'react';

export class TryCarousel extends Component {
 // Define component prop list
 static propTypes = {};

 // Define props default value
 static defaultProps = {};

 // Define inner state
 state = {};

 constructor(props) {
  super(props);
 }

 // LifeCycle Hooks

 // Prototype Functions

 // Ensure the latest function is render
 render() {}
}

组件列表

carousel(轮播组件)

主要用于通用的图片轮播,能够提供点击事件响应。

Usage:

Props:

属性 描述 类型 默认值
data Carousel数据源 Array -
height Carousel的高度 number 150
onPressItem 点击Carousel Item的时候触发 fn -
renderItem 具体的渲染Item的方法,请参考FlatList fn -
autoplay 是否自动切换 bool true
autoplayTimeout Item自动切换的时间间隔(单位s) number 2.5

需要导入的地方

import { HigoCarousel } from '../../components';
<Carousel
      data={} //接受的数据
      onPressItem={} //点击事件
      height={} //图片高度
      autoplay={} //是否自动播放
      autoplayTimeout={} //过渡时间
      renderItem={item => {
       return <Image source={{ uri: item.imageSource }} style={{ flex: 1 }} />;
      }} //图片
/>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
分享XmlHttpRequest调用Webservice的一点心得
Jul 20 Javascript
Javascript中判断变量是数组还是对象(array还是object)
Aug 14 Javascript
JavaScript的21条基本知识点
Mar 04 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
jQuery实用技巧必备(下)
Nov 03 Javascript
基于zepto.js实现手机相册功能
Jul 11 Javascript
javascript帧动画(实例讲解)
Sep 02 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
webpack下实现动态引入文件方法
Feb 22 Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 Javascript
浅谈node.js中间件有哪些类型
Apr 29 Javascript
JavaScript选择器函数querySelector和querySelectorAll
Nov 27 Javascript
在vue项目中使用sass的配置方法
Mar 20 #Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 #Javascript
动态加载、移除js/css文件的示例代码
Mar 20 #Javascript
webpack 打包压缩js和css的方法示例
Mar 20 #Javascript
浅谈Node 调试工具入门教程
Mar 20 #Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 #Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 #jQuery
You might like
德生H-501的评价与改造
2021/03/02 无线电
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
浅谈php和.net的区别
2014/09/28 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
Python 字符串操作方法大全
2014/03/11 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
Pyqt5实现英文学习词典
2019/06/24 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
Python多线程的退出控制实现
2020/08/10 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
社区党建工作方案
2014/06/10 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技