本文介紹了使用react實現(xiàn)手機號的數(shù)據(jù)同步顯示功能的示例代碼,分享給大家,具體如下:
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比營山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式營山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋營山地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
要求如下
// Zinput.js import React, { Component } from 'react'; import './Zinput.css' // NOTE: 獲取焦點事件 原生onFocus 即可 // NOTE: 離開焦點事件 原生onBlur即可 // NOTE: 輸入框數(shù)據(jù)過濾 直接在change方法里進行過濾 // NOTE: 條件處理 通過不同條件返回不同節(jié)點做條件處理 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, }); } /** * 根據(jù)字符串沒隔len位插入一個下滑杠,返回處理后的字符串 * @method getStr * @author 朱陽星 * @datetime 2018-04-02T09:57:58+080 * @email zhuyangxing@foxmail.com * @param {String} str 待處理字符串 * @param {Number} len 每隔位數(shù)插入下滑杠 * @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 條件語句里沒有節(jié)點也要用空字符串進行處理 否則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 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; }
功能雖然實現(xiàn),但是肯定是作為某個節(jié)點的某個子組件使用的,父組件調(diào)用方法有兩種
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.每次子組件焦點離開時調(diào)用父組件傳過來的方法,修改父組件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 根據(jù)react的思想是在子組件處理完某件事的時候調(diào)用父組件的方法修改父組件的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> ); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
網(wǎng)頁標(biāo)題:使用react實現(xiàn)手機號的數(shù)據(jù)同步顯示功能的示例代碼
本文URL:http://www.rwnh.cn/article6/gshoig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、ChatGPT、網(wǎng)站制作、小程序開發(fā)、網(wǎng)頁設(shè)計公司、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)