facilita el desarrollo de aplicaciones web (y móviles nativas) • Permite escribir aplicaciones de forma declarativa • Es rápida, ligera, sencilla y fácil de aprender
conjunto de instrucciones lo que se requiere, a través de éste conjunto ordenado de pasos obtenemos nuestra aplicación (Imperativa) • Una aplicación declarativa es aquella en la que se indica lo que se requiere, sin especificar los detalles de cómo esta será construida
• Abstracción. Usualmente construimos aplicaciones a través de operaciones con el DOM. Evitamos lidiar con diferencias entre navegadores, y con operaciones manuales a través del DOM. • Encapsulación. Trabajamos con unidades atómicas que encapsulan los detalles de como luce y se comporta cada parte de nuestra aplicación. Componentes y elementos.
un conjunto de propiedades, y devuelve un elemento como valor de retorno • Posee propiedades (props) y estado (state), las cuales determinan como será el elemento a devolver. • Por convención, los componentes se nombran con TitleCase. • Una aplicación React, es una jerarquía de elementos que se comunican entre sí
virtual de una “parte” de nuestra aplicación • Puede construirse a partir de elementos nativos (DOM). Por ejemplo elementos p, span, etc. • Puede construirse a partir de componentes (Custom). • Puede ser cualquier cosa que se pueda convertir a un string. (TextNodes). • React.createElement([String | Function], [props], [children])
afectar el elemento que un componente retorna. Son proporcionadas por el componente padre que lo utiliza • El estado, es una propiedad privada de un componente y que guarda información sobre como éste se debe de comportar.
comunicación unidireccional (top-down, data down, actions up) • Mediante propiedades. Las funciones pueden ser pasadas como propiedades que son utilizadas como mecanismo de comunicación • ¿Qué ventajas tiene éste modelo respecto el modelo de autobinding?
actualización innecesarias sobre el DOM • Un componente solo se actualiza si las propiedades que recibe o su propio estado interno cambian • La actualización se puede optimizar si se conoce bajo que circunstancias un componente se debería de actualizar
del lenguaje (Javascript) que permite describir elementos de React de forma muy intuitiva. • HTML en mi Javascript? No es eso una violación a la separación de concerns? Depende del punto de vista de la “separación” • Separación de tecnologías vs Separación de problemas • JSX no es html/sml, es una sintaxis especial para describir elementos de React.
La aplicación se pre-compila (transforma) • Usualmente se utiliza babel. Babel es un compilador para javascript. • Transforma código de X a X. Al principio era de Javascript (moderno) a Javascript (legacy) • Puede transformar las expresiones JSX a llamadas de React.createElement.
es una librería agnóstica al sistema de UI utilizado. • React DOM provee las utilidades necesarias para funcionar en la web • React Native provee las utilidades necesarias para funcionar en aplicaciones Nativas (Android, IOS, Windows Phone) • React VR?