Saltar al contenido

Lección 3 de 20 · Lectura y práctica

Crear tu primera app con componentes nativos

Tipo de lección: VideoConcepto claveCrear tu primera app con componentes nativos en React Native con Expo es como construir una casa usando piezas prefabricadas que funcionan tanto en iOS como en Android. En lugar de escribir.

Del concepto a la práctica

Taller de esta lección

Una primera pantalla útil muestra la diferencia entre componente visual y comportamiento. View agrupa, Text comunica y Button dispara una función; ninguno debe recibir contenido web por accidente. Diseña una tarjeta de estado que cambie mediante una variable booleana y observa que el renderizado depende del estado, no de manipular el árbol manualmente.

Ejemplo resuelto

La implementación autónoma de abajo declara imports, estado y una raíz JSX antes de usar los botones. La salida inicial es Servicio detenido; tras pulsar una vez, es Servicio activo.

Pruébalo

  1. Crea el estado booleano.

  2. Vincula el título del botón.

  3. Renderiza un texto para cada valor.

  4. Pulsa dos veces y registra las salidas.

Error frecuente: cambiar una variable normal y esperar un nuevo render. Corrige usando el actualizador de useState.

Ejercicio: añade un contador de pulsaciones.

Comprueba tu resultado

tras tres pulsaciones, el texto indica 3 y el botón conserva su función original.

Componente y contador autónomos

La versión completa siguiente reemplaza el fragmento aislado: los hooks van dentro del componente y JSX debe tener una raíz. En blank colócalo en App.js; con Router úsalo como pantalla registrada.

jsx
import {useState} from 'react';
import {View,Button,Text} from 'react-native';
export default function App(){
  const [activo,setActivo]=useState(false);
  const [pulsaciones,setPulsaciones]=useState(0);
  function alternar(){setActivo(v=>!v);setPulsaciones(n=>n+1);}
  return <View style={{padding:24}}>
    <Button title={activo?'Desactivar':'Activar'} onPress={alternar}/>
    <Text>{activo?'Servicio activo':'Servicio detenido'}</Text>
    <Text>{pulsaciones}</Text>
  </View>;
}

Desde false/0, los estados tras tres toques son true/1, false/2, true/3. El último botón dice Desactivar y el texto Servicio activo. La forma funcional obtiene el valor anterior incluso cuando React agrupa actualizaciones; no necesitas alterar el árbol nativo. Añade área segura con SafeAreaProvider y SafeAreaView de react-native-safe-area-context, evitando el componente deprecado del núcleo. Revisa tamaño de letra y foco accesible junto al resultado lógico.

View contiene Text e Image con dimensiones y estilos, formando una tarjeta de perfil nativa.
CursaloMapa de práctica
De React a una interfaz nativa

View organiza el contenedor, Text muestra texto e Image representa una imagen. Define dimensiones y estilos del ejemplo y comprueba el diseño con textos largos, imagen ausente y tamaños distintos.

Ver la infografía en tamaño completo ↗

Tipo de lección: Video

Concepto clave

Crear tu primera app con componentes nativos en React Native con Expo es como construir una casa usando piezas prefabricadas que funcionan tanto en iOS como en Android. En lugar de escribir código específico para cada plataforma, usas componentes como View, Text, y Button que Expo traduce automáticamente a elementos nativos. Esto es similar a cómo un arquitecto diseña un plano que luego se adapta a diferentes terrenos sin cambiar la estructura básica.

Los componentes nativos son bloques de construcción que representan elementos visuales en la pantalla, como contenedores, texto o botones. A diferencia del desarrollo web, donde usas HTML y CSS, aquí escribes en JavaScript, pero el resultado es una app verdaderamente nativa. Imagina que estás ensamblando muebles modulares: cada pieza (componente) tiene una función específica, y al combinarlas, creas una interfaz completa que se siente natural en cualquier dispositivo móvil.

Cómo funciona en la práctica

Para crear tu primera app, sigue estos pasos usando Expo. Primero, asegúrate de tener Node.js instalado y ejecuta npx create-expo-app MiPrimeraApp en tu terminal. Esto genera un proyecto básico con una estructura lista para usar. Luego, navega a la carpeta del proyecto y abre el archivo App.js. Aquí es donde escribirás tus componentes.

En React Native, todo comienza con un componente principal que renderiza otros componentes. Por ejemplo, un View actúa como un contenedor (similar a un div en HTML), y dentro colocas Text para mostrar texto. Usa StyleSheet para aplicar estilos, como colores o márgenes, de manera similar a CSS pero con sintaxis de JavaScript. Para ver los cambios en tiempo real, ejecuta npx expo start y escanea el código QR con la app Expo Go en tu teléfono.

Código en acción

Aquí tienes un ejemplo funcional de una app simple que muestra un saludo y un botón. Copia este código en tu App.js para empezar:

import React from 'react';
import { StyleSheet, Text, View, Button, Alert } from 'react-native';

export default function App() {
  const handlePress = () => {
    Alert.alert('¡Hola!', 'Has presionado el botón.');
  };

  return (
    
      ¡Bienvenido a React Native!
      Esta es tu primera app con componentes nativos.
      
    
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#f0f0f0',
    alignItems: 'center',
    justifyContent: 'center',
  },
  title: {
    fontSize: 24,
    fontWeight: 'bold',
    marginBottom: 10,
  },
  subtitle: {
    fontSize: 16,
    color: '#666',
    marginBottom: 20,
  },
});

Ahora, mejoremos este código agregando un componente personalizado. En lugar de tener todo en App.js, crea un archivo separado para reutilizar código:

// Saludo.js
import React from 'react';
import { Text, StyleSheet } from 'react-native';

export default function Saludo({ nombre }) {
  return (
    ¡Hola, {nombre}!
  );
}

const styles = StyleSheet.create({
  text: {
    fontSize: 20,
    color: 'blue',
  },
});

// App.js (actualizado)
import React from 'react';
import { StyleSheet, View, Button, Alert } from 'react-native';
import Saludo from './Saludo';

export default function App() {
  const handlePress = () => {
    Alert.alert('Acción', 'Botón presionado con éxito.');
  };

  return (
    
      
      
    
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

Errores comunes

  • No cerrar etiquetas correctamente: En JSX, todos los componentes deben cerrarse, ya sea con una etiqueta de cierre (ej., <Text>...</Text>) o autoclausura (ej., <Button />). Si olvidas esto, obtendrás errores de sintaxis.
  • Usar estilos inline en exceso: Aplicar estilos directamente en los componentes (ej., style={{ color: 'red' }}) puede hacer el código difícil de mantener. En su lugar, define estilos con StyleSheet.create para mejor rendimiento y claridad.
  • Ignorar la importación de componentes Asegúrate de importar todos los componentes de 'react-native' (ej., import { View, Text } from 'react-native'). Si falta uno, la app fallará.
  • No probar en ambos dispositivos: Los componentes pueden verse diferente en iOS y Android. Usa Expo Go para probar en un iPhone y un Android reales, no solo en el simulador.
  • Olvidar manejar eventos: Los componentes como Button requieren una prop onPress. Si no la defines, el botón no hará nada y podrías pensar que está roto.

Checklist de dominio

  1. Crear un proyecto Expo desde cero usando npx create-expo-app.
  2. Escribir un componente funcional que use al menos tres componentes nativos (ej., View, Text, Button).
  3. Aplicar estilos con StyleSheet.create para cambiar colores, fuentes y diseño.
  4. Manejar un evento simple, como un clic en un botón que muestre una alerta.
  5. Refactorizar código extrayendo un componente personalizado a un archivo separado.
  6. Probar la app en un dispositivo físico usando Expo Go.
  7. Verificar que la app se renderice correctamente tanto en iOS como en Android.

Crear una app de lista de tareas con componentes nativos

En este ejercicio, construirás una app simple de lista de tareas usando componentes nativos de React Native. Sigue estos pasos:

  1. Crea un nuevo proyecto Expo ejecutando npx create-expo-app ListaTareas en tu terminal y navega a la carpeta del proyecto.
  2. Abre App.js y reemplaza el contenido con un componente que muestre un título "Mis Tareas" usando Text dentro de un View.
  3. Agrega un array de tareas (ej., ['Comprar leche', 'Estudiar React Native', 'Hacer ejercicio']) y usa map para renderizar cada tarea como un elemento Text en una lista.
  4. Implementa un botón que agregue una nueva tarea (puede ser una tarea fija como 'Nueva tarea') al array cuando se presione. Usa el hook useState para manejar el estado de las tareas.
  5. Aplica estilos con StyleSheet.create para que el título sea grande y en negrita, y las tareas tengan un margen y color diferenciado.
  6. Prueba la app en tu dispositivo con Expo Go y verifica que las tareas se muestren y que el botón agregue nuevas.
Pistas
  • Usa useState para manejar el array de tareas y actualizarlo al presionar el botón.
  • Recuerda que en React Native, no tienes elementos li; en su lugar, renderiza cada tarea dentro de un Text o View separado.
  • Para mejorar la UI, considera agregar un ScrollView si la lista de tareas crece demasiado.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Sigue con React Native y Expo: Interfaces, Estado y APIs de Dispositivo

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.