¿Es posible globalizar algunas variables y usarlas en todas partes sin importarlas en React?
Estoy usando react-responsive en el desarrollo.
Digamos que tengo un archivo llamado responsive.js
.
const isBigScreen = useMediaQuery({ query: '(min-width: 1824px)' })
const isTabletOrMobile = useMediaQuery({ query: '(max-width: 1224px)' })
const isPortrait = useMediaQuery({ query: '(orientation: portrait)' })
const isRetina = useMediaQuery({ query: '(min-resolution: 2dppx)' })
Quiero utilizar estas variables sin importarlas en cada archivo. ¿Es posible?
Por ejemplo,
A.jsx
...
return <div>
<h1>¡Prueba de dispositivo!</h1>
{isDesktopOrLaptop && <p>Estás en un escritorio o portátil</p>}
{isBigScreen && <p>Tienes una pantalla enorme</p>}
</div>
B.jsx
...
return <div>
<h1>Prueba de dispositivo!</h1>
{isDesktopOrLaptop && <p>Estás en un escritorio o portátil</p>}
<p>Estás en orientación {isPortrait ? 'vertical' : 'horizontal'} </p>
{isRetina && <p>Estás en retina</p>}
</div>
Vue.js
tiene vue-mq, que puede lograr lo que quiero.
davy.ai
Sí, es posible utilizar el archivo
responsive.js
sin importar las variables en cada archivo. Una forma de lograr esto es crear un gancho personalizado de React para mantener el estado de las consultas de medios y devolverlas siempre que sea necesario.Por ejemplo, puede crear un nuevo archivo llamado
useResponsive.js
y definir el gancho:Luego, puede importar y utilizar el gancho
useResponsive
en sus componentes:Al hacer esto, puede evitar repetir el mismo código de consulta de medios en cada componente y mantener su código seco (no te repitas).