欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

react native中的聊天气泡及timer封装成的发送验证码倒计时

程序员文章站 2023-11-26 18:18:40
其实,今天我想把我近期遇到的坑都总结一下: 1.goback的跨页面跳转,又两种方法,一可以像兔哥那样修改navigation源码,二可以用navigationactio...

其实,今天我想把我近期遇到的坑都总结一下:

1.goback的跨页面跳转,又两种方法,一可以像兔哥那样修改navigation源码,二可以用navigationactions    

2.父子组件的传值,一可以用callback  二可以用pubsub发布订阅模式 三可以用manager事件监听(a页面要显示的内容 有两种形式,一是从manager主动接收,也就是说不需要点击什么的获取数据,而是时时监听manager里数据的变化,第二种a页面获取要显示内容的形式是 点击出发,获取)

3 需要说的还是navigation 在navigationoption是一个stack静态变量,里面不能出现this,所以就会出现一个问题 ,比如说navigationoption里的的headerright里放一个添加按钮,点击添加按钮要推出一个新的页面,以前通用的方法是pubsub发布订阅,而兔子说用setparams,不过都能达到相应的功能,只是优劣的问题。还有就是navigation的动画问题,开发种遇到许多问题,自己的成长过程从expo练习demo,到用官网推荐混合开发。一路走来感受颇多,不过还是挺怀念以前做网站时的coding,为什么呢?那时候比较年轻吧!

好了说一下聊天冒泡气泡的布局

import react, { component } from 'react'; import { appregistry, stylesheet, text, view } from 'react-native'; export default class msgpoppage extends component { render() { return ( <view style={styles.container}> <text style={styles.msg}>hello msg</text> <view style={styles.triangle}> </view> </view> ); } } const styles = stylesheet.create({ container: { flex: 1, flexdirection: 'row', justifycontent: 'center', alignitems: 'center', backgroundcolor: '#f5fcff', }, msg: { fontsize: 20, textalign: 'center', padding: 10, backgroundcolor: 'chartreuse', borderradius: 8, }, triangle: { width: 0, height: 0, backgroundcolor: 'transparent', borderstyle: 'solid', borderleftwidth: 30, borderrightwidth: 30, borderbottomwidth: 8, bordertopwidth: 8, borderleftcolor: 'chartreuse', borderrightcolor: 'transparent', bordertopcolor: 'transparent', borderbottomcolor: 'transparent', }, });

代码运行效果:

timer封装 发送验证码倒计时

日常工作中,倒计时组件是少不了的。目前了解的很多倒计时组件会在应用进入后台时,计时停止或者错乱。下面,我们就来实现一个可用,高交互的例子。

1-:支持倒计时结束时,执行回调,并重新开始计时;

下面开始给出源码首先封装一个timer的组件

代码如下

import react, {component} from 'react'; export default class timer extends component { componentwillmount() { const {interval} = this.props; this.timer = setinterval(this.onevent, interval); } componentwillreceiveprops(newprops) { if (newprops.interval !== this.props.interval) { clearinterval(this.timer); this.timer = setinterval(this.onevent, newprops.interval); } } componentwillunmount() { clearinterval(this.timer); } onevent = ev => { const { ontimer } = this.props; ontimer(ev); }; render(){ return this.props.children || null; } }

在用到的地方调用

import react from 'react'; import { text, view, stylesheet, alert,
} 
from 'react-native'; import timer from './timer' export default class timemsg extends react.component { constructor(props){ super(props); this.state={ count:10, isfinish:false, } } ontimer = () => { if(this.state.count>0){ this.setstate({count: this.state.count - 1}); }else { this.setstate({isfinish:true}); } }; againtime=()=>{ if(this.state.isfinish){ this.setstate({ count:10, isfinish:false, }); //回调,当使用组件时,可用传入回调事件 if(this.props.onpress){ this.props.onpress(); } } } render() { let mainview=this.state.count!=0? <text style={styles.textmsg}>剩余{this.state.count}s</text>: <text style={styles.textmsg} onpress={this.againtime}>重新获取</text> return ( <view style={styles.container}> <view style={styles.mainview}> <timer interval={1000} ontimer={this.ontimer}/> {mainview} </view> </view> ); } } const styles=stylesheet.create({ container:{ backgroundcolor:'#4a4a4a', }, textmsg:{ fontsize:16, }, mainview:{ height: 44, padding: 12, } })

代码效果如下

//回调事件
againtime=()=>{
alert("againtime");
}
//倒计时结束时,可以使用此回调再次开始计时,并执行某些时间
<timemsg onpress={ this.againtime }/>

总结

以上所述是小编给大家介绍的react native中的聊天气泡及timer封装成的发送验证码倒计时,希望对大家有所帮助