第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【金秋打卡】第8天 Vue3 + Typescript 從0到1開發(fā)通用基礎(chǔ)組件(3-11~3-13)

標(biāo)簽:
活動(dòng)

课程名称Vue3 + Typescript 从0到1开发通用基础组件

课程讲师:张轩

课程内容:

今天课程学习的主要知识点内容包括:
1、vue3 模块化-追踪鼠标案例;
2、vue3 模块化-接口请求案例;
3、vue3 模块化-接口请求案例之泛型改造;

课程收获:

通过学习老师的视频课程和同学的公开笔记,主要收获如下:
一、vue3 模块化-追踪鼠标案例
1、抽离逻辑实现到定义文件 userMousePosition.ts

import {reactive,onMounted,onUnmounted} from 'vue';
function userMousePosition(){
    const pos=reactive({
        x:0,
        y:0
    })

    // const x = ref(0);
    // const y = ref(0);

    const updateMouse = (e: MouseEvent) => {
        pos.x = e.pageX;
        pos.y = e.pageY;
    };

    onMounted(() => {
      document.addEventListener("click", updateMouse);
    });

    onUnmounted(() => {
      document.removeEventListener("click", updateMouse);
    });

    return pos
}

2、在需要使用的地方进行使用

const { x, y } = toRefs(userMousePosition());

二、vue3 模块化-接口请求案例
1、抽离逻辑实现到定义文件 useURLLoader.ts

import { ref } from 'vue'
import axios from 'axios'

function useURLLoader<T>(url: string) {
  const result = ref(null)
  const loading = ref(true)
  const loaded = ref(false)
  const error = ref(null)

  axios.get(url).then((rawData) => {
    loading.value = false
    loaded.value = true
    result.value = rawData.data
  }).catch(e => {
    error.value = e
    loading.value = false
  })

  return {
    result,
    loading,
    error,
    loaded
  }
}

export default useURLLoader

2、在需要使用的地方进行使用

const {result,loading,loaded,error}= useURLLoader('https://dog.ceo/api/breeds/image/random');

三、vue3 模块化-接口请求案例之泛型改造
1、泛型改造

import { ref } from 'vue'
import axios from 'axios'

function useURLLoader<T>(url: string) {
  const result = ref<T | null>(null)
  const loading = ref(true)
  const loaded = ref(false)
  const error = ref(null)

  axios.get(url).then((rawData) => {
    loading.value = false
    loaded.value = true
    result.value = rawData.data
  }).catch(e => {
    error.value = e
    loading.value = false
  })

  return {
    result,
    loading,
    error,
    loaded
  }
}

export default useURLLoader

2、调用界面

interface DogResult {
  message: string;
  status: string;
}

const {result,loading,loaded,error}= useURLLoader<DogResult>('https://dog.ceo/api/breeds/image/random')
watch(result,()=>{
  if(result.value){
    console.log('result', result.value.message)
  }
})

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消