Skip to content

Instantly share code, notes, and snippets.

@tobiasdalhof
Last active March 22, 2020 15:48
Show Gist options
  • Save tobiasdalhof/9c6d9e20ee6c1827bd82f5817f48611f to your computer and use it in GitHub Desktop.
Save tobiasdalhof/9c6d9e20ee6c1827bd82f5817f48611f to your computer and use it in GitHub Desktop.
Vue Composition API function - window size
import { Ref, onMounted, onUnmounted, reactive, toRefs } from '@vue/composition-api'
interface WindowSize {
x: Ref<number>
y: Ref<number>
}
export function useWindowSize(): WindowSize {
const windowSize = reactive({ x: 0, y: 0 })
const resizeListener = () => {
({ innerWidth: windowSize.x, innerHeight: windowSize.y } = window)
}
onMounted(() => window.addEventListener('resize', resizeListener))
onUnmounted(() => window.removeEventListener('resize', resizeListener))
resizeListener()
return toRefs(windowSize)
}
export default useWindowSize
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment