Que es React Native?
React Native es un framework de codigo abierto desarrollado por Meta (Facebook) que permite a los desarrolladores crear aplicaciones moviles para iOS y Android usando JavaScript y React. A diferencia de las apps hibridas que se ejecutan en un WebView, React Native renderiza usando componentes nativos reales.
Como Funciona React Native
// La Arquitectura de React Native
+-----------------------------------------------------+
| Hilo de JavaScript |
| +------------------------------------------------+ |
| | Tus Componentes React y Logica de Negocio | |
| | const App = () => <View><Text>Hola</Text></View>| |
| +------------------------------------------------+ |
+-----------------------------------------------------+
|
| Bridge / JSI (Nueva Arquitectura)
v
+-----------------------------------------------------+
| Hilo Nativo |
| +------------------------------------------------+ |
| | Componentes UI Nativos (UIKit / Android Views)| |
| | UIView, UILabel, android.widget.TextView | |
| +------------------------------------------------+ |
+-----------------------------------------------------+
React Native vs Otros Enfoques
| Enfoque | Tecnologia | Renderizado UI | Rendimiento |
|---|---|---|---|
| Nativo | Swift/Kotlin | Componentes nativos | Mejor |
| React Native | JavaScript + React | Componentes nativos | Casi nativo |
| Flutter | Dart | Renderizado personalizado | Casi nativo |
| Hibrido (Ionic) | HTML/CSS/JS | WebView | Mas lento |
Tu Primer Componente React Native
// App.js - Una app React Native simple
import React from 'react';
import { View, Text, StyleSheet, TouchableOpacity, Alert } from 'react-native';
export default function App() {
const handlePress = () => {
Alert.alert('Hola!', 'Bienvenido a React Native');
};
return (
<View style={styles.container}>
<Text style={styles.title}>Bienvenido a React Native</Text>
<Text style={styles.subtitle}>
Construye apps nativas con JavaScript
</Text>
<TouchableOpacity style={styles.button} onPress={handlePress}>
<Text style={styles.buttonText}>Comenzar</Text>
</TouchableOpacity>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#f5f5f5',
},
title: {
fontSize: 28,
fontWeight: 'bold',
color: '#333',
marginBottom: 8,
},
subtitle: {
fontSize: 16,
color: '#666',
marginBottom: 24,
},
button: {
backgroundColor: '#007AFF',
paddingHorizontal: 24,
paddingVertical: 12,
borderRadius: 8,
},
buttonText: {
color: '#fff',
fontSize: 16,
fontWeight: '600',
},
});
Diferencias Clave con React Web
<View>en lugar de<div><Text>requerido para todo el texto (sin strings simples)StyleSheet.create()en lugar de CSSTouchableOpacityen lugar deonClick- Sin CSS - usa objetos de estilos JavaScript
- Flexbox por defecto (columna en vez de fila)
Por Que Elegir React Native?
Multiplataforma
Un codigo base para iOS y Android
Conocimiento de React
Aprovecha tus habilidades existentes de React
Desarrollo Rapido
Hot reloading e iteracion rapida
Adopcion en la Industria
Usado por Meta, Microsoft, Shopify, Discord