久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

第六節(jié):Vue3 開(kāi)發(fā)WordPress設(shè)置選項(xiàng) – 添加對(duì)象傳值和數(shù)據(jù)校驗(yàn)

本節(jié)解決了數(shù)據(jù)量過(guò)大時(shí)的結(jié)構(gòu)化傳值問(wèn)題,以及給出了簡(jiǎn)單的數(shù)據(jù)校驗(yàn)例子,通過(guò)本系列教程,相信您已經(jīng)可以開(kāi)發(fā)自己的設(shè)置選項(xiàng)了。

承接上一節(jié),我們使用 Vite 對(duì)JS資源進(jìn)行打包后,優(yōu)化了不少性能,但也有不少麻煩還沒(méi)有解決,這次來(lái)做個(gè)收尾。

  • 本系列代碼分享在 GitHub 中,希望能幫助大家理解
  • https://github.com/muze-page/vue-spa

流程

第六節(jié):Vue3 開(kāi)發(fā)WordPress設(shè)置選項(xiàng) - 添加對(duì)象傳值和數(shù)據(jù)校驗(yàn)

多對(duì)象傳值

在上一節(jié)的 Option.vue 文件中,有這樣的代碼

const datas = reactive({
  dataOne: "",
  dataTwo: "",
  dataName: [],
  dataImage: "",
  dataSelectedImage: "",
});

看起來(lái)沒(méi)啥問(wèn)題,但我現(xiàn)在需要開(kāi)發(fā)2個(gè) Tab 選項(xiàng),每個(gè)選項(xiàng)中都有3個(gè)選項(xiàng)需要填寫,類似這樣

  let datas = reactive({

      npc_zfb_appid: "",
      npc_zfb_private_key: "",
      npc_zfb_public_key: "",

      npc_wx_mch_id: "",
      npc_wx_cert_api: "",
      npc_wx_cert_key: "",

  });

嗯,還是沒(méi)啥問(wèn)題,但是,我要是有10個(gè) Tab 選項(xiàng)呢?

如果你只是低頭跑,你總會(huì)撞上山的

聰明的你想到了,可以這樣啊

  let datas = reactive({

    zfb: {
      npc_zfb_appid: "",
      npc_zfb_private_key: "",
      npc_zfb_public_key: "",
    },
    wx: {
      npc_wx_mch_id: "",
      npc_wx_cert_api: "",
      npc_wx_cert_key: "",
    },
    npc_refund_user: [],
  });

有其他需求再接著分,或者分了再分。

這當(dāng)然沒(méi)問(wèn)題,但我們的獲取選項(xiàng)的接口就不夠用了,
需要修改 interface.php 文件中的函數(shù) get_option_by_RestAPI() 為以下內(nèi)容

//讀取Option
//支持?jǐn)?shù)組類數(shù)據(jù)請(qǐng)求
function get_option_by_RestAPI($data)
{
    // 將輸入數(shù)據(jù)轉(zhuǎn)換成數(shù)組類型 
    $dataArray = json_decode($data->get_body(), true);
    $return = array();
    // 遍歷數(shù)組,檢查每個(gè)元素是否為對(duì)象
    foreach ($dataArray as $option_name => $value) {
        // 初始化當(dāng)前選項(xiàng)的值數(shù)組
        $option_value = array();
        // 如果當(dāng)前元素是一個(gè)非空數(shù)組,則遍歷其中的每個(gè)字段
        if (is_array($value) && !empty($value)) {
            foreach ($value as $field_name => $field_value) {
                // 獲取指定選項(xiàng)的值,如果不存在,則使用空字符串代替
                $option_value[$field_name] = get_option($field_name, '');
            }
            // 將當(dāng)前選項(xiàng)及其值添加到返回?cái)?shù)組中
            $return[$option_name] = $option_value;
        } else {
            // 如果當(dāng)前元素非數(shù)組或數(shù)組為空,獲取指定選項(xiàng)的值
            $return[$option_name] = get_option($option_name, '');
        }
    }
    return $return; // 返回所有選項(xiàng)的鍵值對(duì)
}

這里面進(jìn)行了若干次判斷,并進(jìn)行對(duì)應(yīng)的處理,以保證我們可以正常是使用上面提到的數(shù)據(jù)結(jié)構(gòu)。

瀏覽器的響應(yīng)結(jié)構(gòu)就是這樣的

第六節(jié):Vue3 開(kāi)發(fā)WordPress設(shè)置選項(xiàng) - 添加對(duì)象傳值和數(shù)據(jù)校驗(yàn)

數(shù)據(jù)校驗(yàn)

如果我們需要的是用戶名,但使用者卻填寫了手機(jī)號(hào),這時(shí),會(huì)導(dǎo)致拿不到需要的數(shù)據(jù),就需要在數(shù)據(jù)提交前進(jìn)行數(shù)據(jù)校驗(yàn),來(lái)保證數(shù)據(jù)的正確性。

代碼的使用者是一匹野馬,你不能指望他按照你的想法去跨紅色的欄

為了便于演示,我們使用方便的正則來(lái)進(jìn)行數(shù)據(jù)校驗(yàn)。分別是姓名和手機(jī)號(hào)

準(zhǔn)備數(shù)據(jù)

我們修改 Option.vue 文件,準(zhǔn)備兩個(gè)變量用來(lái)存儲(chǔ)我們的選項(xiàng)值

//存儲(chǔ)選項(xiàng)值
const datas = reactive({
//省略
  check: {
    name: "",
    phone: "",
  },
});

這里,我使用了結(jié)構(gòu)化的數(shù)據(jù),便于數(shù)據(jù)管理。

數(shù)據(jù)獲取里也得加上

//獲取數(shù)據(jù)
const get_option = () => {
  axios
    .post(dataLocal.route + "pf/v1/get_option", datas, {
      headers: {
        "X-WP-Nonce": dataLocal.nonce,
        "Content-Type": "application/json",
      },
    })
    .then((response) => {
      //省略
      datas.check.name = data.check.name;
      datas.check.phone = data.check.phone;
    })
    .catch((error) => {
      window.alert("連接服務(wù)器失敗或后臺(tái)讀取出錯(cuò)!數(shù)據(jù)讀取失敗");
      console.log(error);
    });
};

這樣,就能在頁(yè)面初始加載時(shí),拿到選項(xiàng)的默認(rèn)值了

準(zhǔn)備正則

我們準(zhǔn)備兩個(gè)計(jì)算屬性,通過(guò)正則來(lái)判斷,并輸出對(duì)應(yīng)的布爾值

//驗(yàn)證名稱
const isName = computed(() => {
  // 正則表達(dá)式驗(yàn)證名字,2到6個(gè)中文字符
  const reg = /^[u4e00-u9fa5]{2,6}$/;
  return reg.test(datas.check.name);
});
//驗(yàn)證電話號(hào)碼
const isPhone = computed(() => {
  // 正則表達(dá)式驗(yàn)證電話號(hào)碼
  const reg = /^1[3456789]d{9}$/;
  return reg.test(datas.check.phone);
});

他會(huì)持續(xù)的拿到輸入的值,并進(jìn)行判斷輸出的。

準(zhǔn)備模版

我們?cè)谀0嫖募校瑢?duì)應(yīng)的值用上

  <h3>數(shù)據(jù)校驗(yàn)</h3>
  姓名:<input type="text" v-model="datas.check.name" />
  <p v-if="!isName" class="check">格式錯(cuò)誤 - 必須為兩字到六字中文</p>
  <br />
  手機(jī)號(hào):<input type="text" v-model="datas.check.phone" />
  <p v-if="!isPhone" class="check">格式錯(cuò)誤 - 必須是1開(kāi)頭的11位手機(jī)號(hào)</p>
  <hr />

這樣,當(dāng)拿到的值符合正則需求時(shí),計(jì)算函數(shù)輸出 true ,然后 if 反向判斷為 false ,不顯示警告內(nèi)容。

效果

執(zhí)行打包命令后,刷新 VueSpa 菜單可查看效果

第六節(jié):Vue3 開(kāi)發(fā)WordPress設(shè)置選項(xiàng) - 添加對(duì)象傳值和數(shù)據(jù)校驗(yàn)

提示信息的外觀,我加了點(diǎn)小小的樣式。

還有以下幾點(diǎn)需要改進(jìn)

  • 點(diǎn)擊保存按鈕進(jìn)行數(shù)據(jù)校驗(yàn)
  • 校驗(yàn)通過(guò)才能正常報(bào)存
  • 將校驗(yàn)數(shù)據(jù)模塊化,可復(fù)用

當(dāng)然,基于 Node 生態(tài),您還可以通過(guò)諸多現(xiàn)成的校驗(yàn)框架更方便的實(shí)現(xiàn)同樣的功能。

總結(jié)

現(xiàn)在,前后端進(jìn)行了分離,后端只需負(fù)責(zé)存儲(chǔ)數(shù)據(jù),前端負(fù)責(zé)準(zhǔn)備和展示數(shù)據(jù)即可。大大提升了代碼的可維護(hù)性和健壯性,降低了瀏覽器的性能開(kāi)銷。

當(dāng)然,在前端工程化的路上,你還有無(wú)限多的可能,待您探索。

本系列章節(jié)核心內(nèi)容到此為止,后續(xù)有更棒的想法,會(huì)持續(xù)分享給大家的。

??
Npcink上的部份代碼及教程來(lái)源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
無(wú)意侵害您的權(quán)益,請(qǐng)發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
?
購(gòu)物車
優(yōu)惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      日韩a一级欧美一级| 国产丰满美女做爰| 天堂中文在线资源| 久久久久久蜜桃| 国产精品成人69xxx免费视频| 亚洲男人天堂av在线| 午夜国产福利视频| 日韩精品一区二区三区高清免费| 久久久久久久片| 韩国无码一区二区三区精品| 国产精品国产三级国产专区52| 一级黄色免费看| 中文字幕黄色片| 在线播放精品视频| 少妇黄色一级片| 日本精品久久久久中文| 毛片视频免费播放| 久草视频免费在线播放| 国产又粗又爽视频| 国产三级精品三级在线观看| 国产成人精品av在线观| 99久久精品国产色欲| 亚洲精品中文字幕乱码无线| 一区二区三区少妇| 这里只有久久精品视频| 中文字幕55页| 中文字幕丰满孑伦无码专区| 中文字幕无码日韩专区免费| 中文字幕久久网| 亚洲国产精品自拍视频| 亚洲国产精品一区二区久久hs| 亚洲国产精品久| 亚洲一级免费毛片| 99精品视频99| 国产不卡在线观看视频| 国产乱码久久久久久| 精品欧美一区二区精品少妇| 久久久久久久久久一区| 人妻精品久久久久中文| 日韩久久久久久久久| 亚州国产精品视频| 中文字幕在线视频精品| 99久久精品国产一区色| 国产精品国产三级国产专区52| 国产三级日本三级在线播放| 九九热在线免费| 欧美日韩精品在线观看视频 | 成人毛片视频免费看| 亚洲一区二区在线视频观看| www.色就是色| 精品毛片在线观看| 日韩精品在线免费视频| 中文字幕人妻一区二| 爆乳熟妇一区二区三区霸乳| 国产亚洲色婷婷久久99精品| 老熟妻内射精品一区| 无码精品人妻一区二区| 亚洲熟妇无码av| 国产女主播喷水视频在线观看| 久草视频在线免费| 婷婷国产成人精品视频| 亚洲欧美日韩一级| 国产免费不卡av| 欧美 日韩 成人| 在线观看av免费观看| 91日韩视频在线观看| 精品成人av一区二区三区| 人妻一区二区三区免费| 中文字幕求饶的少妇| 国产wwwxx| 欧美一级特黄aaaaaa| 中文字幕亚洲欧美日韩| 国产精品自拍第一页| 人妻视频一区二区| 亚洲美女综合网| 精品丰满少妇一区二区三区| 天天插天天射天天干| www.欧美国产| 牛夜精品久久久久久久| 中文字幕永久视频| 国产又粗又猛又爽又黄| 天天色天天综合网| www.97av| 日本黄色不卡视频| 97人妻人人揉人人躁人人| 久久久精品人妻一区二区三区四 | 一区二区三区久久久久| 国产成人精品av久久| 日产欧产va高清| 91香蕉在线视频| 欧美午夜精品一区二区| 一道本在线免费视频| 欧美黄色一级生活片| 一级黄色片在线免费观看| 玖玖爱视频在线| 亚洲性生活网站| 蜜臀av中文字幕| 亚洲一区二区在线视频观看| 蜜桃精品成人影片| 91丝袜一区二区三区| 日本少妇一区二区三区| 成人高潮免费视频| 少妇极品熟妇人妻无码| 国产人妻大战黑人20p| 制服.丝袜.亚洲.中文.综合懂色 | 国产又粗又猛又黄| 亚洲成a人片在线www| 国产又粗又黄又猛| 中文字幕人妻互换av久久| 久久久久久国产精品日本| 亚洲欧美自偷自拍| 欧洲成人一区二区三区| 丰满人妻一区二区三区大胸 | 国产成人黄色网址| 性一交一乱一乱一视频| 国内精品福利视频| 亚洲天天综合网| 日韩精品视频网址| 国产一级特黄视频| 亚洲欧美日韩一级| 日批免费观看视频| 国产在线不卡av| 91麻豆制片厂| 五月天激情四射| 免费又黄又爽又猛大片午夜| www.中文字幕| 中文字幕激情小说| 人妻体体内射精一区二区| 国产一级特黄aaa大片| 一道本无吗一区| 五月婷婷综合久久| 男人天堂网在线视频| 国产jjizz一区二区三区视频| 伊人免费视频二| 欧美激情第3页| 国产午夜免费福利| 91在线公开视频| 一区二区的视频| 人人人妻人人澡人人爽欧美一区| 国产农村妇女毛片精品久久| 91视频在线免费| 最新在线黄色网址| 五月天综合激情| 欧美一级特黄aaa| 精品人妻无码一区二区| 国产盗摄x88av| www.17c.com喷水少妇| 亚洲精品久久一区二区三区777| 色婷婷在线视频| 欧美一级特黄aaa| 久久久久久久久久一区二区三区| 国产精品久久久免费看| av男人的天堂av| 亚洲三级在线视频| 中文av字幕在线观看| 五月婷婷深爱五月| 日批免费观看视频| 日韩精品xxx| 人人干人人干人人干| 免费看国产黄色片| 久久人人爽人人爽人人| 精品无码久久久久| 国产区一区二区三| 国产视频三区四区| 国产av人人夜夜澡人人爽| a天堂视频在线观看| 91在线视频在线观看| 亚洲区小说区图片区| 亚洲精品自拍网| 夜夜爽8888| 亚洲一级黄色大片| 亚洲天堂最新地址| 一道本无吗一区| 99精品在线播放| 国产91精品看黄网站在线观看| free性中国hd国语露脸| xxxx18国产| 国产成人免费看| 国产精品无码久久av| 国产性生活大片| 精品无码人妻一区二区三区品| 九九视频免费在线观看| 麻豆一区二区三区精品视频 | 女教师高潮黄又色视频| 麻豆视频免费在线播放| 欧美日韩一区二区区| 色婷婷一区二区三区在线观看 | 懂色av成人一区二区三区| 丰满的亚洲女人毛茸茸| 国产裸体无遮挡| 精品国产www| 欧美三级午夜理伦| 三上悠亚在线一区二区| 在线 丝袜 欧美 日韩 制服| 亚洲性猛交xxxx乱大交| 高清一区在线观看| 国产性生活视频| 男人的天堂官网| 日日噜噜噜噜久久久精品毛片| 亚洲av成人无码久久精品|