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 相关文章推荐
jQuery Select下拉框操作小结(推荐)
Jul 22 Javascript
轻松掌握JavaScript策略模式
Aug 25 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
Aug 31 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
jQuery实现一个简单的轮播图
Feb 19 Javascript
《javascript少儿编程》location术语总结
May 27 Javascript
JavaScript原型链与继承操作实例总结
Aug 24 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
Aug 31 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 Javascript
简单了解JavaScript sort方法
Nov 25 Javascript
Vue Render函数创建DOM节点代码实例
Jul 08 Javascript
vue特效之翻牌动画
Apr 20 Vue.js
在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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
javascript Base类 包含基本的方法
2009/07/22 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
python判断正负数方式
2020/06/03 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
调解员先进事迹材料
2014/02/07 职场文书
相亲活动方案
2014/08/26 职场文书
公民代理授权委托书
2014/09/24 职场文书
孝女彩金观后感
2015/06/10 职场文书
护理培训心得体会
2016/01/22 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
nginx常用配置conf的示例代码详解
2022/03/21 Servers