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 相关文章推荐
通过event对象的fromElement属性解决热区设置主实体的一个bug
Dec 22 Javascript
jQuery 表格插件整理
Apr 27 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
jquery加载图片时以淡入方式显示的方法
Jan 14 Javascript
js实现模拟银行卡账号输入显示效果
Nov 18 Javascript
FullCalendar日历插件应用之数据展现(一)
Dec 23 Javascript
纯JS代码实现隔行变色鼠标移入高亮
Nov 23 Javascript
js上传图片预览的实现方法
May 09 Javascript
javascript ES6 新增了let命令使用介绍
Jul 07 Javascript
详解vue axios中文文档
Sep 12 Javascript
select获取下拉框的值 下拉框默认选中方法
Feb 28 Javascript
微信小程序实现左滑删除效果
Nov 18 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
PHP中动态显示签名和ip原理
2007/03/28 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
使用PHP开发留言板功能
2019/11/19 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
vue+node+webpack环境搭建教程
2017/11/05 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
详解python中的文件与目录操作
2017/07/11 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
女娲补天教学反思
2014/02/05 职场文书
高级工程师英文求职信
2014/03/19 职场文书
安全责任书怎么写
2014/07/28 职场文书
导游欢送词
2015/01/31 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
2015年大学社团工作总结
2015/04/09 职场文书