宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見問題
產(chǎn)品動態(tài)
精選推薦

vue3.0中用組合API的形式代替vue2.0混入(mixins)

管理 管理 編輯 刪除

mixin這個函數(shù)是非常霸道的,局部使用還好,如果是全局使用,在項目比較大的時候,個人覺得不是很好,在vue2的時候,因為沒有組合式API這一說法,所以mixin對開發(fā)人員來說能解決好多事情。但是到了vue3,這種方式已經(jīng)不推薦使用了,因為我們在vue3中,JS都是在setup里面執(zhí)行的,這個時候如果我們在外面寫一些公共的JS文件,然后暴露出來,在需要使用到的組件里面按需引入,這種比mixin覺得更好。下面就介紹一下使用組合api的形式實現(xiàn)發(fā)送驗證碼的邏輯,來代替vue2.0中的mixin。因本文只討論vue3.0的實現(xiàn)方式,對vue2.0實現(xiàn)的邏輯不在討論。是實現(xiàn)方式比較簡單直接上代碼。

1. 首先在utils文件夾中新建一個 useVerifyCode.js文件,文件的實現(xiàn)過程如下;

import { ref} from 'vue'
import { verifyApi, getShortKeyApi } from '@/api/public.js'
const disabled = ref( false )
const text = ref( '獲取驗證碼' )
//發(fā)送驗證碼
const sendCode = () => {
  if ( disabled.value ) return
  disabled.value = true
  let n = 60
  text.value = '剩余 ' + n + 's';
  const run = setInterval( () => {
    n = n - 1
    if ( n < 0 ) {
      clearInterval( run )
    }
    text.value = '剩余 ' + n + 's'
    if ( text.value < '剩余 ' + 0 + 's' ) {
      disabled.value = false
      text.value = '重新獲取'
    }
  }, 1000 )
}
// 發(fā)送驗證碼邏輯
export function useSendCode () {
  return { text, disabled, sendCode }
}

// 獲取短信驗證碼與key
export function useCmsKeyVerify () {
  //接受手機號碼
  const getKeyVerify = ( phone ) => {
    getShortKeyApi().then( async ( res ) => {
      const cmsKey = res.data.key
      const data = {
        phone: phone,
        key: cmsKey,
        types: 0
      }
      await verifyApi( data )
        .then( ( res ) => {
          sendCode()
          console.log(‘發(fā)送成功’)
        } )
        .catch( ( error ) => {
          console.log(‘發(fā)送失敗’)
        } )
    } )
  }

  return { getKeyVerify }
}

這里定義一個發(fā)送驗證碼的邏輯,返回了disabled 與text兩個值這兩個值將作為其他組件使用時調(diào)用的兩個重要參數(shù)。其邏輯是點擊發(fā)送的邏輯是點擊”獲取驗證碼“時驗證成功時,將顯示文字更改'剩余 ' + n + 's', 60s完成后文字將變成”重新獲取“倒計時過程中不能重復發(fā)送驗證碼;以上就是在組合api中完成發(fā)送驗證碼的邏輯;

在組件中如何使用,請看下文。

import { ref, reactive } from 'vue'
import { useSendCode, useCmsKeyVerify } from '@/utils/useVerifyCode.js';

// 這里將獲取組合函數(shù)的api retrun text, disabled, sendCode 以及函//數(shù)并稱
let { text, disabled, sendCode } = useSendCode()
let { getKeyVerify } = useCmsKeyVerify()
// 獲取vuex存取變量
// 發(fā)送驗證碼
const sendVerificationCode = (): void => {
  if ( !isSendCode.value || disabled.value ) return false
  getKeyVerify( formData.phone )
}

在使用過程中組合api的函數(shù)還時特別簡單,只要引入即可,其他的樣式問題,這里將不再展示。以上的代碼是基于vue3.0版本的程序編寫組合api開發(fā)。該方法也可進一步優(yōu)化,需要的可自行修改。

請登錄后查看

武湘君 最后編輯于2023-04-11 14:40:24

快捷回復
回復
回復
回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
排序 默認正序 回復倒序 點贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無簡介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復' : '回復'}}
刪除
回復
回復

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復' : '回復'}}
刪除
回復
回復
查看更多
打賞
已打賞¥{{reward_price}}
5985
{{like_count}}
{{collect_count}}
添加回復 ({{post_count}})

相關推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見問題 產(chǎn)品動態(tài) 精選推薦 首頁頭條 首頁動態(tài) 首頁推薦
取 消 確 定
回復
回復
問題:
問題自動獲取的帖子內(nèi)容,不準確時需要手動修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認打賞

微信登錄/注冊

切換手機號登錄

{{ bind_phone ? '綁定手機' : '手機登錄'}}

{{codeText}}
切換微信登錄/注冊
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服