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 相关文章推荐
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
Dec 08 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
Nov 30 Javascript
javascript上传图片前预览图片兼容大多数浏览器
Oct 25 Javascript
JavaScript中的setMilliseconds()方法使用详解
Jun 11 Javascript
对JavaScript客户端应用编程的一些建议
Jun 24 Javascript
使用javaScript动态加载Js文件和Css文件
Oct 24 Javascript
jQuery扩展+xml实现表单验证功能的方法
Dec 25 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
基于对象合并功能的实现示例
Oct 10 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
layDate日期控件使用方法详解
Nov 15 Javascript
关于vue的列表图片选中打钩操作
Sep 09 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 变量定义方法
2009/06/14 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
js实现表格筛选功能
2017/01/18 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
浅谈python numpy中nonzero()的用法
2018/04/02 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
高中毕业自我鉴定
2013/12/22 职场文书
给酒店员工的表扬信
2014/01/11 职场文书
单位成立周年感言
2014/01/26 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
杨善洲观后感
2015/06/04 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
element tree树形组件回显数据问题解决
2022/08/14 Javascript