(위의 화면은 composition api와 과거 option api의 비교)
현재화면이 브라우저인지 모바일인지 변수로 관리
VueJS의 Composition API를 사용해서 Composable을 만든 예제
export function useWindowSize() {
const windowWidth = ref(window.innerWidth) // 1.현재 화면의 초기값을 (반응형) 변수로 저장
function updateSize() {
windowWidth.value = window.innerWidth // 3. resize이벤트는 화면 크기가 변경될때마다 windowWidth변수에 변경된 화면값을 저장한다
}
onMounted(() => {
window.addEventListener('resize', updateSize) // 2.화면이 렌더링되면 resize이벤트를 등록한다
// (컴포지션api의 라이프사이클 mounted함수)
})
onUnmounted(() => {
window.removeEventListener('resize', updateSize) // 5. 화면이 사라지게 될 경우 resize이벤트를 해체해서 메모리 낭비를 막는다
// (컴포지션api의 라이프사이클 unmounted함수)
})
const isMobile = computed(() => windowWidth.value < 768) // 4.화면 넓이가 768px이상이라면 참(=모바일화면)을 반환한다
return { isMobile } //4. useWindowSize()함수의 반환형으로 isMobile을 전달한다
}
사실 nuxt의 모듈중에는 nuxt-viewport이라는 모듈이 존재해서 해당 모듈 추가만으로 화면크기를 변수로 취득할수있다
Nov 12, 2023
Views 115