React Native竖向轮播组件的封装详解

本文主要介绍了react native 通告消息竖向轮播组件的封装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

本文实例为大家分享了React Native通告消息竖向轮播组件的封装代码,供大家参考,具体内容如下

import React, {Component} from 'react'import {  Text,  View,  Animated,  Easing,  StyleSheet,} from 'react-native'export default class ScrollVertical extends Component {  static defaultProps = {    enableAnimation: true,  };  constructor(props) {    super(props)    let translateValue= new Animated.ValueXY({x: 0, y: 0})    translateValue.addListener(({x,y})=>{      // Log('value',x,y)    })    this.state = {      translateValue: translateValue,      // 滚屏高度      scrollHeight: this.props.scrollHeight || 32,      // 滚屏内容      kb_content: [],      // Animated.View 滚动到的 y轴坐标      kb_tempValue: 0,      // 最大偏移量      kb_contentOffsetY: 0,      // 每一次滚动切换之前延迟的时间      delay: this.props.delay || 500,      // 每一次滚动切换的持续时间      duration: this.props.duration || 500,      enableAnimation: true,    }  }  render() {    return (              {          this.state.kb_content.length !== 0 ?                          {this.state.kb_content.map(this._createKbItem.bind(this))}             : null        }          )  }  componentWillReceiveProps(nextProps) {    Log('componentWillReceiveProps', nextProps)      this.setState({          enableAnimation: nextProps.enableAnimation?true:false        }, () => {          this.startAnimation();        }      )  }  componentDidMount() {    Log('componentDidMount')    let content = this.props.data || []    if (content.length !== 0) {      let h = (content.length + 1) * this.state.scrollHeight      this.setState({        kb_content: content.concat(content[0]),        kb_contentOffsetY: h      })      // 开始动画      // this._startAnimation()      this.startAnimation();    }  }  _createKbItem(kbItem, index) {    return (              {kbItem.content}          )  }  startAnimation = () => {    if (this.state.enableAnimation) {      if(!this.animation){        this.animation = setTimeout(() => {          this.animation=null;          this._startAnimation();        }, this.state.delay);      }    }  }  componentWillUnmount() {    if (this.animation) {      clearTimeout(this.animation);    }    if(this.state.translateValue){      this.state.translateValue.removeAllListeners();    }  }  _startAnimation = () => {    this.state.kb_tempValue -= this.state.scrollHeight;    if (this.props.onChange) {      let index = Math.abs(this.state.kb_tempValue) / (this.state.scrollHeight);      this.props.onChange(index {        // 无缝切换        // Log('end')        if (this.state.kb_tempValue - this.state.scrollHeight === -this.state.kb_contentOffsetY) {          // 快速拉回到初始状态          this.state.translateValue.setValue({x: 0, y: 0});          this.state.kb_tempValue = 0;        }        this.startAnimation();      })  }}const styles = StyleSheet.create({  kbContainer: {    // 必须要有一个背景或者一个border,否则本身高度将不起作用    backgroundColor: 'transparent',    overflow: 'hidden'  },  kb_text_c: {    fontSize: 18,    color: '#181818',  }

登录后复制

使用

import React, {Component} from 'react';import {  StyleSheet,  View,  TouchableOpacity,  Alert,  ScrollView,  ART,  TouchableHighlight,  ListView,  Dimensions,  Text} from 'react-native';import ScrollVertical from '../../app-widget/scroll-vertical'const dataArray = [  {    title: '降价了',  },  {    title: '全场五折',  },  {    title: '打到骨折',  }]export default class extends React.Component {  render() {    let array = [{ content: '' }];    if (dataArray && dataArray.length > 0) {      array = [];      for (let item of dataArray) {        array.push({ content: item.title});      }    }    return (               {          if (dataArray && dataArray.length > 0) {            Log(dataArray[this.index].title)          }        }} style={{ flexDirection: 'row', backgroundColor: "#FFFFFF", alignItems: 'center', borderRadius: 8, paddingLeft: 5, paddingRight: 5 }}>          公告                      新                                 {                this.index = index;              })}              enableAnimation={true}              data={array}              delay={2500}              duration={1000}              scrollHeight={34}              scrollStyle={{ alignItems: 'flex-start' }}              textStyle={{ color: Constant.colorTxtContent, fontSize: Constant.fontSizeSmall }} />                              查看                  );  }};

登录后复制

React Native竖向轮播组件的封装详解

相关推荐:

React Native地址挑选器功能实现方法

React Native跨域资源加载出错如何解决

React Native 搭建开发环境详解

以上就是React Native竖向轮播组件的封装详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2790136.html

(0)
上一篇 2025年3月8日 18:51:50
下一篇 2025年3月8日 18:51:57

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • store优化React组件的方法详解

    本文主要介绍了使用store来优化react组件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 在使用 React 编写组件的时候,我们常常会碰到两个不同的组件之间需要共享状态情况,…

    编程技术 2025年3月8日
    200
  • 构建React组件最全方法

    我非常喜欢使用react,因为我觉得它最大优点就是足够简单。 在简单和容易之间还是存在区别 的,我的意思是react也很简单。当然你需要些时间来了解它,当你掌握其核心内容后,其他的事都是水到渠成的了。下文将介绍比较难的部分。 耦合&…

    编程技术 2025年3月8日
    200
  • React 和Webpack构建打包优化实例详解

    本文主要介绍了浅谈react + webpack 构建打包优化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 使用 babel-react-optimize 对 React 代码进行优化 检…

    2025年3月8日
    200
  • React根据宽度自适应高度实例分享

    有时对于响应式布局,我们需要根据组件的宽度自适应高度。css无法实现这种动态变化,传统是用jquery实现。本文主要介绍了react根据宽度自适应高度的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希…

    2025年3月8日
    200
  • React利用相对于根目录进行引用组件实例详解

    本文主要给大家介绍了关于react如何使用相对于根目录进行引用组件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧,希望能帮助到大家。 在对自己开发的组件中经常…

    编程技术 2025年3月8日
    200
  • React Native中RefreshContorl下拉刷新教程

    我们知道app中都有下拉加载,在react native中也有类似的控件,本文主要介绍了react native中的refreshcontorl下拉刷新使用,希望能帮助到大家。 一、属性方法 (1) onRefresh function 在…

    编程技术 2025年3月8日
    200
  • React实践Tree组件如何使用

    本文主要介绍了react实践之tree组件的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 实现功能 渲染数据 展开合并 使用 数据结构: const node = { title:…

    2025年3月8日
    200
  • React中组件间抽象实例讲解

    在组件构建中,通常有一类功能需要被不同的组件公用,此时就涉及抽象的概念,在react中我们主要了解mixin和高阶组件。本文主要介绍了浅谈react中组件间抽象,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希…

    编程技术 2025年3月8日
    200
  • React Native中NavigatorIOS组件简单使用教程

    本文主要介绍了react native中navigatorios组件的简单使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 一、NavigatorIOS组件介绍 1,组件说明 使用 N…

    编程技术 2025年3月8日
    200
  • React组件生命周期实例分析

    本文主要和大家分享react组件生命周期,react组件的生命周期有一堆的相关函数,其实就是一推的钩子函数。在react组件创建的各个阶段触发特定的钩子函数。希望能帮助到大家。 可以先大概看一下下面这张图: constructor 构造函数…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论