react怎麼實現手機驗證碼

2023-01-04 14:02:11

react實現手機驗證碼的方法:1、下載antd button和input元件;2、通過「<Input className={`apiMobileInput`} disabled value={this.props.phoneNumber} />」獲取客戶的手機號;3、通過「await this.props.sendCode({...})」實現獲取驗證碼即可。

本教學操作環境:Windows10系統、react18.0.0版、Dell G3電腦。

react怎麼實現手機驗證碼?

React結合 antd 實現手機或者郵箱獲取驗證碼60秒倒計時

我這邊是使用了antd button 和input 元件,若大家需要 提前下載

import { Input, Button } from ‘antd’
 <div>
       <p className={`littleTitle`}>手機號</p>
      <Input className={`apiMobileInput`} disabled value={this.props.phoneNumber} />//這個value是客戶手機號,是我在客戶資訊裡面獲取到的
        <p className={`littleTitle`}>獲取驗證碼</p>
           <Input
              className={`apiInput`}
               addonAfter={
                  <button
                    //判斷如果點選了獲取驗證碼,就讓button按鈕上顯示 *秒後重傳送 並且button設定為disabled
                    disabled={this.props.liked ? false : true}
                    onClick={() => this.getCode(theme)}//點選此按鈕獲取驗證碼
                     className={`verificationCode`}>{this.state.liked ? 獲取驗證碼:(60)秒後重發}
                   </button>} />
         </div>
 //獲取驗證碼
getCode = async theme => {
    //我這邊是獲取了客戶資訊,從中取到客戶的手機號和郵箱,若客戶繫結了手機號,就通過手機號驗證,若沒有繫結手機號,就通過郵箱驗證碼驗證
        const { data } = this.props.information.data
        //這個是獲取當前語言
        let lang = getLocalStorage('defaultLanguage')
        //得到語言Id
        let langId = lang === 'Chinese' ? 'zh' : lang === 'English' ? 'en' : lang === 'Japanese' ? 'ja' : ''
       //把手機號和語言id傳入後臺,獲取驗證碼
       const status =  await this.props.sendCode({ mobileOrEmail: data.mobile ? data.mobile : data.email, langId: langId })
       //呼叫下面檢視驗證碼傳送的狀態方法
         this.getSendCodeStatus(status,theme)
    }
    //倒計時
    countDown() {
        const { count } = this.state
        if (count === 1) {//當為0的時候,liked設定為true,button按鈕顯示內容為 獲取驗證碼
            this.setState({
                count: 60,
                liked: true,
            })
        } else {
            this.setState({
                count: count - 1,
                liked: false,
            })
            setTimeout(() => this.countDown(), 1000)//每一秒呼叫一次
        }
    }
    //傳送驗證碼是否成功
    getSendCodeStatus = async (status,theme) => { 
        if (status.success === false) {//若傳送失敗,提示客戶資訊傳送失敗,不進行倒計時
            sendCodeError(theme)
        } else {
            sendCodeSuccess(theme)//若傳送成功,liked設為false,意味著傳送驗證碼的按鈕將被會禁用
            this.setState({
                authCode: '',
                email: '',
                liked: false,
            })
            this.countDown()//呼叫倒計時
        }
    }
登入後複製

思路:

客戶點選獲取驗證碼的時候,需要先有客戶的手機號,把手機號傳入後臺,獲取驗證碼,我這邊做的時候,是判斷了是否傳送驗證碼成功,成功以後才執行60秒倒計時,到倒計時為0的時候,把liked設定為true,button的內容恢復為 獲取驗證碼

//效果圖

f3d85407c311ecbaba3851446d45c91.jpg

推薦學習:《》

以上就是react怎麼實現手機驗證碼的詳細內容,更多請關注TW511.COM其它相關文章!