使用react实现手机号的数据同步显示功能的示例代
网络编程 2021-07-04 17:33www.168986.cn编程入门
本篇文章主要介绍了使用react实现手机号的数据同步显示功能的示例代码,长沙网络推广觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随长沙网络推广过来看看吧
本文介绍了使用react实现手机号的数据同步显示功能的示例代码,分享给大家,具体如下
要求如下
- 输入框输入内容数据长度大于0,展示出预览信息
- 光标离开关闭预览信息
- 预览信息每隔4位插入一个特殊字符_,输入内容不变
- 限制长度为13位
- 只允许输入数字(0-9)
// Zinput.js import React, { Component } from 'react'; import './Zinput.css' // NOTE: 获取焦点事件 原生onFocus 即可 // NOTE: 离开焦点事件 原生onBlur即可 // NOTE: 输入框数据过滤 直接在change方法里进行过滤 // NOTE: 条件处理 通过不同条件返回不同节点做条件处理 class Zinput extends Component { constructor(props) { super(props); this.state = { value: '', showBig: false, }; this.handleChange = this.handleChange.bind(this); this.inputOnFocus = this.inputOnFocus.bind(this); this.inputOnBlur = this.inputOnBlur.bind(this); } inputOnFocus() { if (this.state.value.length > 0) { this.setState({ showBig: true }) } } inputOnBlur() { this.setState({ showBig: false }) if(this.props.chanegNumber){ this.props.chanegNumber(this.state.value) } } handleChange(event) { let val = event.target.value.substr(0, 13) .replace(/[^\d]/g, '') event.target.value = val this.setState({ value: val, showBig: true, }); } / 根据字符串没隔len位插入一个下滑杠,返回处理后的字符串 @method getStr @author 朱阳星 @datetime 2018-04-02T09:57:58+080 @email zhuyangxing@foxmail. @param {String} str 待处理字符串 @param {Number} len 每隔位数插入下滑杠 @return {String} 处理后的字符串 / getStr(str, len) { let lenth = str.length let len1 = len - 1 let newStr = '' for (var i = 0; i < lenth; i++) { if (i % len === len1 && i > 0) { newStr += str.charAt(i) + '_' } else { newStr += str.charAt(i) } } if (newStr.length % (len + 1) === 0) { // 解决一位为补充项问题 newStr = newStr.substr(0, newStr.length - 1) } return newStr } render() { // NOTE return 需要用圆括号包住并处理 // NOTE 条件语句里没有节点也要用空字符串进行处理 否则sonalint会报错,页面也会报错 const showBig = this.state.showBig ? ( <div className="big-show">{ this.getStr(this.state.value,4) }</div> ) : '' return ( <div className="zInput"> <input className="input" type = "text" onFocus={ this.inputOnFocus } onBlur={ this.inputOnBlur } value={ this.state.value } onChange={ this.handleChange }> </input> {showBig} </div> ) } } export default Zinput; // Don't fet to use export default!
<!-- Zinput.css --> .zInput{ position: absolute; :80px; left:40px; } .input { position: absolute; : 0; left: 0; } .big-show { position: relative; : -40px; font-size: 36px; line-height: 40px; background-color: red; }
功能虽然实现,肯定是作为某个节点的某个子组件使用的,父组件调用方法有两种
1.使用refs直接获取子组件state的值
constructor(props) { super(props); this.handerClick2 = this.handerClick2.bind(this); } handerClick2(){ // NOTE 父组件通过refs获取子组件的state console.log("使用ref获取子组件的值",this.refs.zinput.state.value) } render() { return ( <div className="App"> <Zinput ref="zinput"></Zinput> <input type="button" value="获取电话号码的值22" onClick={ this.handerClick2 }/> </div> ); }
2.每次子组件焦点离开时调用父组件传过来的方法,修改父组件state值
constructor(props) { super(props); this.state = { phoneNumber: '', }; this.handerClick = this.handerClick.bind(this); this.changePhoneNumber = this.changePhoneNumber.bind(this); } changePhoneNumber(number){ this.setState({ phoneNumber: number, }) } handerClick(){ // NOTE 根据react的思想是在子组件处理完某件事的时候调用父组件的方法修改父组件的state值 console.log("使用state获取值",this.state.phoneNumber) } render() { return ( <div className="App"> <Zinput ref="zinput" chanegNumber={this.changePhoneNumber}></Zinput> <input type="button" value="获取电话号码的值" onClick={ this.handerClick }/> </div> ); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程