您好,登錄后才能下訂單哦!
這篇“vue3怎么獲取屏幕可視區域寬高”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“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()在組件掛載前運行。
win+R,輸入cmd打開命令窗口,按照以下步驟進行安裝。
npm i @vue/cli -g
vue create mv3 //mv3為項目名稱
cd /mv3 npm run serve
Vue3中繼續使用Vue2中的生命周期鉤子,但有有2個鉤子發生了改變 - beforeDestroy改名為beforeUnmount(卸載前) - destroyed改名為unmounted(卸載) 與vue2不同的是,vue3中是有了el模板之后才會去初始化,而vue2中是先created之后再去找模板。
Vue3生命周期示意圖如下:
在vue2中,生命周期暴露在vue實例的選項上,使用時直接調用;vue3中使用生命周期鉤子,需要先導入項目,才能夠使用。
import {onMounted} from 'vue'
在 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
定義一個對象類型的響應式數據,內部基于ES6的Proxy實現,通過代理對象操作源對象內部數據進行操作;返回一個對象的響應式代理。
import {reactive} from 'vue' // 定義一個引用類型的響應式數據list 默認是 const list = reactive(["vue","react","angular"])
計算屬性關鍵詞: computed。
var twiceNum = computed(()=>num.value*2)
computed vs methods
可以使用 methods 來替代 computed,效果上兩個都是一樣的,但是 computed 是基于它的依賴緩存,只有相關依賴發生改變時才會重新取值。而使用 methods ,在重新渲染的時候,函數總會重新調用執行。
methods: { reversedMessage2: function () { return this.message.split('').reverse().join('') } }
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怎么獲取屏幕可視區域寬高”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。