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 getElementsByName()的用法说明
Jul 31 Javascript
jquery 学习之二 属性(类)
Nov 25 Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 Javascript
解决js中window.open弹出的是上次的缓存页面问题
Dec 29 Javascript
js判断鼠标左、中、右键哪个被点击的方法
Jan 27 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
Aug 11 Javascript
JavaScript实现重力下落与弹性效果的方法分析
Dec 20 Javascript
浅谈Webpack核心模块tapable解析
Sep 11 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
Dec 16 Javascript
jQuery实现获取多选框的值示例
Feb 07 jQuery
在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也可以?成Shell Script
2006/10/09 PHP
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
PHP中的正规表达式(二)
2006/10/09 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
小程序实现投票进度条
2019/11/20 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
一些.net面试题
2014/10/06 面试题
CAD制图设计师自荐信
2014/01/29 职场文书
婚前协议书怎么写
2014/04/15 职场文书
论文评语大全
2014/04/29 职场文书
生产车间标语
2014/06/11 职场文书
我的中国梦口号
2014/06/16 职场文书
求职自我评价范文
2015/03/09 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python