Cómo crear un gancho personalizado para el oyente de eventos Vue3 CompositionAPI
Soy relativamente nuevo en Vue. En React, puedo usar useEffect en mis custom hooks, pero no tengo idea de cómo hacerlo en Vue. Quería crear un custom hook para escuchar el cambio de tamaño de la ventana. Así es como lo hice en React.
useDimensions.js
import React, { useState, useEffect } from ‘react’;
function getWindowDimensions() {
const { innerWidth: width, innerHeight: height } = window;
return {
width, height
};
}
export default function useWindowDimensions() {
const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());
useEffect(() => {
function handleResize() {
setWindowDimensions(getWindowDimensions());
}
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, [])
return windowDimensions;
}
Y lo llamo en mi componente como let {width, height} = useDimensions()
¿Cómo lo hago en Vue3? ¿CompositionAPI?
davy.ai
En Vue 3, puedes lograr una funcionalidad similar usando los ganchos de ciclo de vida
onMounted
yonUnmounted
y la funciónref
del paquete@vue/composition-api
. Así es como puedes convertir el gancho personalizado de React en una función de composición de Vue 3:Luego, puedes usarlo en un componente de la siguiente manera:
Ten en cuenta que la sintaxis para usar funciones de composición es diferente de usar la API de opciones en Vue 2, por lo que deberás envolver la función
setup
de tu componente condefineComponent
si estás usando TypeScript.