这次给大家带来react实现手机号的数据同步,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.com * @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 ? ( <p className="big-show">{ this.getStr(this.state.value,4) }</p> ) : '' return ( <p className="zInput"> <input className="input" type = "text" onFocus={ this.inputOnFocus } onBlur={ this.inputOnBlur } value={ this.state.value } onChange={ this.handleChange }> </input> {showBig} </p> ) } } export default Zinput; // Don't forget to use export default!
<!-- Zinput.css --> .zInput{ position: absolute; top:80px; left:40px; } .input { position: absolute; top: 0; left: 0; } .big-show { position: relative; top: -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 ( <p className="App"> <Zinput ref="zinput"></Zinput> <input type="button" value="获取电话号码的值22" onClick={ this.handerClick2 }/> </p> ); }
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 ( <p className="App"> <Zinput ref="zinput" chanegNumber={this.changePhoneNumber}></Zinput> <input type="button" value="获取电话号码的值" onClick={ this.handerClick }/> </p> ); }
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
vue-router懒加载时添加loading提示提升用户体验
以上是react实现手机号的数据同步的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript是现代网站的核心,因为它增强了网页的交互性和动态性。1)它允许在不刷新页面的情况下改变内容,2)通过DOMAPI操作网页,3)支持复杂的交互效果如动画和拖放,4)优化性能和最佳实践提高用户体验。

C 和JavaScript通过WebAssembly实现互操作性。1)C 代码编译成WebAssembly模块,引入到JavaScript环境中,增强计算能力。2)在游戏开发中,C 处理物理引擎和图形渲染,JavaScript负责游戏逻辑和用户界面。

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)