20-Guía Paso a Paso para Entender React Native (antes del Tutorial)

 


1. 📱 ¿Qué es React Native?

React Native es un framework para crear aplicaciones móviles nativas usando JavaScript y React. A diferencia de las apps web, genera componentes nativos reales (no WebViews).

Comparación con React Web:

React WebReact Native
<div><View>
<span><p><Text>
<input><TextInput>
onClickonPress
CSSStyleSheet (JavaScript)

2. 🎯 Prerrequisitos Básicos

A) Conocimientos previos necesarios:

  • ✅ JavaScript ES6+ (funciones flecha, destructuración, spread operator)

  • ✅ Conceptos básicos de React (si ya sabes React web, ¡estás al 90%!)

    • Componentes

    • Props (propiedades)

  • ✅ Hooks (useState, useEffect)

B) Si NO sabes React, necesitas esto primero:

javascript
// 1. Componente funcional
function MiComponente() {
  return <View>Hola Mundo</View>;
}

// 2. Props (propiedades que recibe un componente)
function Saludo(props) {
  return <Text>Hola {props.nombre}</Text>;
}
// Uso: <Saludo nombre="Juan" />

// 3. Estado con useState
function Contador() {
  const [numero, setNumero] = useState(0);
  // numero = valor actual
  // setNumero = función para cambiarlo
  
  return (
    <View>
      <Text>{numero}</Text>
      <Button onPress={() => setNumero(numero + 1)} />
    </View>
  );
}

3. 📚 Conceptos Clave del Tutorial

A) Componentes Core de React Native (IMPORTANTE)

javascript
import { 
  View,      // Contenedor (como div)
  Text,      // Para mostrar texto
  TextInput, // Input de texto
  Button,    // Botón básico
  TouchableOpacity, // Botón personalizable
  FlatList,  // Para listas largas
  StyleSheet // Para estilos
} from 'react-native';

B) StyleSheet (CSS en React Native)

javascript
const styles = StyleSheet.create({
  contenedor: {
    flex: 1,                  // Ocupa todo el espacio disponible
    padding: 20,              // Padding como CSS
    marginTop: 10,            // Margin
    backgroundColor: '#fff',  // Fondo
    borderRadius: 8,          // Bordes redondeados
    flexDirection: 'row',     // Dirección: 'row' (horizontal) o 'column' (vertical)
    justifyContent: 'center', // Alineación horizontal
    alignItems: 'center'      // Alineación vertical
  }
});

C) Eventos (diferentes al web)

javascript
// En React Web:
<button onClick={funcion} />

// En React Native:
<Button onPress={funcion} />
<TouchableOpacity onPress={funcion}>
  <Text>Presionar</Text>
</TouchableOpacity>

4. 🧩 Explicación Paso a Paso del Tutorial

Paso 1: Importaciones Necesarias

javascript
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
  • React: Siempre necesario para componentes

  • Componentes nativos: Lo que usarás para construir la UI

Paso 2: Crear un Componente

javascript
function App() {
  return (
    <View style={styles.container}>
      <Text>Mi App</Text>
    </View>
  );
}

Paso 3: Estado (useState)

javascript
// En App.js del tutorial:
const [tasks, setTasks] = useState([]);
  • tasks: Array vacío inicial []

  • setTasks: Función para actualizar el array

  • Cuando se actualiza, el componente se re-renderiza

Paso 4: Pasar Props entre Componentes

javascript
// App.js envía función a TaskForm:
<TaskForm onAddTask={addTask} />

// TaskForm.js recibe y usa:
function TaskForm({ onAddTask }) {
  // ...
  onAddTask(taskText); // Ejecuta la función del padre
}

Paso 5: FlatList para Listas

javascript
<FlatList
  data={tasks}                    // Array de datos
  keyExtractor={(item) => item.id.toString()} // Key única
  renderItem={({ item }) => (     // Renderiza cada item
    <Text>{item.text}</Text>
  )}
/>

5. 🔄 Flujo de Datos COMPLETO

Ejemplo Visual:

text
1. Usuario escribe: "Comprar leche"
   ↓
2. TaskForm guarda en taskText = "Comprar leche"
   ↓
3. Usuario presiona "Agregar"
   ↓
4. TaskForm ejecuta: onAddTask("Comprar leche")
   ↓
5. App.js recibe: addTask("Comprar leche")
   ↓
6. Crea objeto: {id: 123, text: "Comprar leche", completed: false}
   ↓
7. Actualiza estado: setTasks([...tasks, nuevoObjeto])
   ↓
8. TaskList recibe nuevo array y se re-renderiza

6. 💡 Tips para Entender Mejor

A) Similitudes con React Web que YA sabes:

javascript
// Estado - IGUAL
const [estado, setEstado] = useState(valor);

// Props - IGUAL
function Componente(props) { ... }

// Retorno JSX - MUY SIMILAR
return (
  <View> {/* En vez de <div> */}
    <Text>{variable}</Text> {/* En vez de <p> o <span> */}
  </View>
);

B) Diferencias Clave:

javascript
// 1. NO hay etiquetas HTML
// MAL: <div>, <p>, <span>, <input>
// BIEN: <View>, <Text>, <TextInput>

// 2. Estilos en JavaScript
// Web: className="mi-clase"
// React Native: style={styles.miEstilo}

// 3. Eventos diferentes
// Web: onClick, onChange, onSubmit
// RN: onPress, onChangeText

C) Estructura típica de un componente:

javascript
// 1. Importaciones
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';

// 2. Componente funcional
function MiComponente() {
  // 3. Lógica (estado, efectos, funciones)
  
  // 4. Retorno JSX
  return (
    <View style={styles.container}>
      <Text>Contenido</Text>
    </View>
  );
}

// 5. Estilos
const styles = StyleSheet.create({
  container: {
    flex: 1
  }
});

// 6. Exportación
export default MiComponente;

7. 🚀 Ejercicios Previos Recomendados

Ejercicio 1: Componente Básico

javascript
// Crea un componente que muestre tu nombre y edad
function Presentacion() {
  const nombre = "Tu Nombre";
  const edad = 25;
  
  return (
    <View>
      <Text>Hola, me llamo {nombre}</Text>
      <Text>Tengo {edad} años</Text>
    </View>
  );
}

Ejercicio 2: Estado Simple

javascript
// Crea un contador con botón de incrementar
function Contador() {
  const [contador, setContador] = useState(0);
  
  return (
    <View>
      <Text>Contador: {contador}</Text>
      <Button 
        title="+1" 
        onPress={() => setContador(contador + 1)}
      />
    </View>
  );
}

Ejercicio 3: Props

javascript
// Componente Saludo que recibe nombre por props
function Saludo(props) {
  return <Text>¡Hola {props.nombre}!</Text>;
}

// Uso: <Saludo nombre="Ana" />

8. 📖 Glosario Rápido

TérminoSignificado
ComponenteFunción que retorna elementos UI
PropsDatos que pasas a un componente (read-only)
EstadoDatos que pueden cambiar dentro del componente
useStateHook para crear estado
ViewContenedor (similar a div)
TextPara mostrar texto (obligatorio para texto)
StyleSheetSistema de estilos (objeto JavaScript)
onPressEvento al presionar (similar a onClick)
FlexboxSistema de layout (activado por defecto)

9. ✅ Checklist antes de Empezar el Tutorial

  • Entiendo funciones de JavaScript ES6

  • Sé qué son los componentes de React

  • Comprendo qué son props y estado

  • Entiendo cómo usar useState

  • Sé que React Native usa componentes diferentes a HTML

  • Comprendo que los estilos son objetos JavaScript


10. 🆘 Si te Atascas en el Tutorial

Problema común 1: "No entiendo la comunicación entre componentes"

javascript
// App.js (Padre)
function App() {
  const addTask = (texto) => { /* lógica */ };
  return <TaskForm onAddTask={addTask} />;
}

// TaskForm.js (Hijo)
function TaskForm(props) {
  // props.onAddTask es la función addTask del padre
  props.onAddTask("texto del input");
}

Problema común 2: "No sé qué hace useState"

javascript
// useState devuelve un array con dos elementos:
const [valor, setValor] = useState(inicial);

// Ejemplo concreto:
const [contador, setContador] = useState(0);
// contador = 0 (valor actual)
// setContador(5) -> cambia contador a 5
// setContador(contador + 1) -> incrementa en 1

Problema común 3: "No entiendo flexbox"

javascript
// Por defecto en React Native:
// - flexDirection: 'column' (vertical)
// - Todo es display: flex

// Para fila horizontal:
<View style={{flexDirection: 'row'}}>
  <Text>Izquierda</Text>
  <Text>Derecha</Text>
</View>

🎯 Conclusión

Para entender el tutorial, necesitas:

  1. ✅ JavaScript básico (variables, funciones, arrays)

  2. ✅ Conceptos básicos de React (componentes, props, estado)

  3. ✅ Saber que React Native usa componentes propios (View, Text, etc.)

  4. ✅ Entender que los estilos son objetos JS

Si tienes esto, ¡estás listo! El tutorial te guiará paso a paso con:

  • Código completo

  • Explicaciones detalladas

  • Ejemplos prácticos

¿Listo para empezar? ¡Ve al tutorial y sigue cada paso! 🚀

¿Hay algo específico de esta explicación que necesites aclarar más?

Comentarios

Entradas más populares de este blog

0-Sistema de Tareas

13-CRUD en Laravel para Web y API con Rutas Normales (No Resource)

10-Introducción a Blade en Laravel con un Ejemplo Práctico