中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue3怎么獲取屏幕可視區域寬高

發布時間:2023-04-18 16:09:27 來源:億速云 閱讀:136 作者:iii 欄目:開發技術

這篇“vue3怎么獲取屏幕可視區域寬高”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue3怎么獲取屏幕可視區域寬高”文章吧。

    一、從vue2到vue3

    vue3.0 向下兼容 vue2.x 版本,優化了主要核心雙向綁定原理和體積大小,并且更加友好的兼容 ts 語法。vue3是基于ES6新增的proxy代理實現的。

    1.1 vue3的特點 新增了組合式api更接近原生js更加解耦(收到react啟發)按需加載1.2 與vue2的區別

    相同點:生命周期基本一致、與vue2的模板語法基本一致、與vue2的選項基本一致data methods computed watch等。

    不同點:啟動方式不同、全局方法掛載不一樣、vue3可以擁有多個根節點、生命周期卸載不同、vue3新增部分 setup()在組件掛載前運行。

    二、vue3的安裝使用

    win+R,輸入cmd打開命令窗口,按照以下步驟進行安裝。

    2.1 安裝腳手架

    npm i @vue/cli -g

    2.2 創建項目

    vue create mv3 //mv3為項目名稱

    2.3 手動安裝

    vue3怎么獲取屏幕可視區域寬高

    2.4 進入并運行項目服務器

    cd /mv3
    npm run serve

    三、vue3生命周期

    Vue3中繼續使用Vue2中的生命周期鉤子,但有有2個鉤子發生了改變 - beforeDestroy改名為beforeUnmount(卸載前) - destroyed改名為unmounted(卸載) 與vue2不同的是,vue3中是有了el模板之后才會去初始化,而vue2中是先created之后再去找模板。

    Vue3生命周期示意圖如下:

    vue3怎么獲取屏幕可視區域寬高

    vue3怎么獲取屏幕可視區域寬高

    四、vue3核心

    4.1 setup組件

    在vue2中,生命周期暴露在vue實例的選項上,使用時直接調用;vue3中使用生命周期鉤子,需要先導入項目,才能夠使用。

    import {onMounted} from 'vue'

    4.2 ref創建響應式數據        

    在 vue 3中,可以通過一個新的 ref 函數使任何響應式變量在任何地方起作用 ;ref() 函數可以根據給定的值來創建一個響應式的數據對象,返回值是一個對象,且只包含一個 .value 屬性。在 setup() 函數內,由 ref() 創建的響應式數據返回的是對象,所以需要用 .value 來訪問。

    使用ref可以創建一個包含響應式數據的引用對象(reference對象,簡稱ref對象),可以是基本類型、也可以是對象。

    import { ref } from 'vue' //使用前先導入
     
    const counter = ref(0)
     
    console.log(counter) // { value: 0 }
    console.log(counter.value) // 0
     
    counter.value++
    console.log(counter.value) // 1

    4.3 reactive創建響應式引用類型方法

    定義一個對象類型的響應式數據,內部基于ES6的Proxy實現,通過代理對象操作源對象內部數據進行操作;返回一個對象的響應式代理。

    import {reactive} from 'vue'
    // 定義一個引用類型的響應式數據list 默認是
    const list = reactive(["vue","react","angular"])

    4.4 computed & methods

    計算屬性關鍵詞: computed。

    var twiceNum = computed(()=>num.value*2)

    computed vs methods

            可以使用 methods 來替代 computed,效果上兩個都是一樣的,但是 computed 是基于它的依賴緩存,只有相關依賴發生改變時才會重新取值。而使用 methods ,在重新渲染的時候,函數總會重新調用執行。

    methods: {
      reversedMessage2: function () {
        return this.message.split('').reverse().join('')
      }
    }

    4.5 watch監聽

             watch(參數1,參數2) 默認是懶偵聽的,即僅在偵聽源發生變化時才執行回調函數。參數1是偵聽源,參數2是回調函數。 

    案例:創建一個stepper組件(src/components/StepperCom.vue),在HomeView中引入(src/views/HomeView.vue)

    src/components/StepperCom.vue

    <template>
        <span>
            <button @click="count--">-</button>
            <input type="text"  v-model="count">
            <button @click="count++">+</button>
        </span>
    </template>
    <script setup>
    //defineProps定義props
    import {defineProps,ref,watch,defineEmits,watchEffect,defineExpose} from 'vue'
    //定義props傳入參數
    const props=defineProps({
        //類型為數字或者字符串,默認值為1
        value:{type:[Number,String],default:1}
    })
    //定義一個響應式對象初始值為props.value
    const count=ref(props.value);
    //定義事件發送器
    var emits=defineEmits(["input"]);
    //監聽count的變化
    watch(count,()=>{
        //發送一個inout事件  事件值為count的value
        emits("input",count.value);
    })
    //只要watchEffect中出現了數據,數據發生變化都會被執行
    watchEffect(()=>{
        count.value=props.value;
    })
    //defineExpose規定了組件哪些值可以被引用獲取
    defineExpose({count})
    </script>

     src/views/HomeView.vue

    <template>
      <div>
        <h2>setup</h2>
        <button @click="num++">{{num}}</button>
        <stepper-com :value="10" @input="num=$event"></stepper-com>
      </div>
    </template>
    <script setup>
    //使用setup可以簡寫(不用導出,組件不用注冊)
    import StepperCom from '@/components/StepperCom.vue'
    import {ref} from 'vue'
        const num=ref(5)
    </script>

    五、案例(獲取可視區域寬高數據)

    src/utils/utils.js

    import {ref,onMounted,onBeforeUnmount} from 'vue'
    export function useWinSize(){
        const size=ref({width:1920,height:1080});
        //窗口變化時更新size
        function onResize(){
            size.value={
                //用窗口的最新寬高更新width和heigth
                width:window.innerWidth,
                height:window.innerHeight
            }
        }
        //組件掛載完畢更新size
        onMounted(()=>{
            window.addEventListener("resize",onResize);
        })
        //組件要卸載的時候移除事件監聽
        onBeforeUnmount(() => {
            window.removeEventListener("resize",onResize);
        })
     
        return size;
    }

    src/views/HomeView.vue

    <template>
      <div>
        <h2>可視區域寬度與高度</h2>
        <p>{{size}}</p>
      </div>
    </template>
    <script setup>
     
    //導入useWinSize方法
    import {useWinSize} from '@/utils/utils.js'
     
    //方法執行,返回一個對象size
    const size=useWinSize();
     
    </script>

    以上就是關于“vue3怎么獲取屏幕可視區域寬高”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    水富县| 肇庆市| 钦州市| 宁化县| 贺兰县| 新源县| 亚东县| 东明县| 仙居县| 科技| 石屏县| 邳州市| 阿克| 全州县| 南安市| 沈阳市| 尼玛县| 微山县| 和田市| 页游| 阜宁县| 拉孜县| 岫岩| 漳浦县| 沙坪坝区| 霸州市| 聊城市| 揭阳市| 西和县| 沙湾县| 陕西省| 伊吾县| 临清市| 阿拉善右旗| 新蔡县| 鄱阳县| 建平县| 横山县| 株洲市| 潞城市| 广宁县|