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 相关文章推荐
Javascript 去除数组的重复元素
May 04 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
Mar 01 Javascript
JQuery的Ajax跨域请求原理概述及实例
Apr 26 Javascript
jquery实现加载等待效果示例
Sep 25 Javascript
Javascript排序算法之计数排序的实例
Apr 05 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
Jul 17 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 Javascript
Vue数据双向绑定底层实现原理
Nov 22 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程序的国际化实现方法(利用gettext)
2011/08/14 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
原生js轮播特效
2017/05/18 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
2020/07/21 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
营销与策划应届生求职信
2013/11/04 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
活动总结书
2014/05/08 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
会计岗位职责范本
2015/04/02 职场文书
货款欠条范本
2015/07/03 职场文书
员工升职自我评价
2019/03/26 职场文书
python创建字典及相关管理操作
2022/04/13 Python
Elasticsearch 配置详解
2022/04/19 Java/Android