React - Cross Platform


  • administrators

    Una práctica que se vuelve común en nuestros días es que las aplicaciones puedan ser compatible con múltiples plataformas, es entonces donde teníamos dificultades para hacer funcionar nuestras aplicaciones diseñadas para la web (ReactDom) en dispositivos móviles por ejemplo (ReactNative).

    Te presento un conjunto de pensamientos simples a la hora de desarrollar y de esta manera puedas reutilizar el código que tienes.

    styled-components/primitives

    Una muy buena práctica que comparten los devs de AirBnb es de no utilizar el abanico de componentes en react-native, en otras palabras intenta hacer todo con los siguientes componentes.

    • Animated: Declarative animations.
    • Image: A base component for Image rendering.
    • StyleSheet: Styling the primitives.
    • Text: A base component for Text rendering.
    • Touchable: A base component for interaction.
    • View: A base component for Layout.

    Segun los desarrolladores que ya utilizan estas primitivas en sus proyectos, un 99% de los componentes necesarios para una aplicación funcional pueden ser totalmente completados con estos.

    direct DOM manipulation

    Siempre que hagas aplicaciones multiplataforma debes tener en cuenta no utilizar o manipular el DOM directamente, facil decir pero a veces complicado implementar.

    En casos extremos donde estás obligado a utilizar el DOM puede que ayas considerado utilizar !!window condición que dará true en web y cuando utilices react-native dara false. En muchos casos puede ser la solución pero si tienes acceso a la configuración de tu proyecto intenta configurar una variable de entorno !!process.env.REACT_DOM de esta forma toma la responsabilidad de tu código y no de la ausencia de la variable window.

    Por último les dejo este video muy util y con buenos consejos y prácticas.

    Video de Leland Richardson (AirBnb)
    React as a Platform: A path towards a truly cross-platform UI - Leland Richardson

    APRENDAMOS DE LOS ERRORES DE OTROS !