Introducción

En React, los componentes son las piezas fundamentales que componen una aplicación. Un componente en React es una función o una clase que opcionalmente acepta entradas (conocidas como "props") y devuelve un elemento de React que describe cómo debería aparecer una sección de la interfaz de usuario.

Conceptos Clave

  1. Componentes Funcionales: Son funciones de JavaScript que aceptan props como argumento y devuelven elementos de React.
  2. Componentes de Clase: Son clases de ES6 que extienden de React.Component y tienen un método render que devuelve elementos de React.
  3. Props: Son datos que se pasan a los componentes para que puedan utilizarlos.
  4. Estado (State): Es un objeto que representa la parte de la interfaz de usuario que puede cambiar con el tiempo.

Componentes Funcionales

Los componentes funcionales son la forma más sencilla de definir un componente en React. Aquí hay un ejemplo básico:

import React from 'react';

function Greeting(props) {
  return <h1>Hello, {props.name}!</h1>;
}

export default Greeting;

Explicación

  • Greeting es un componente funcional que acepta props como argumento.
  • props.name se utiliza para mostrar el nombre pasado al componente.
  • El componente devuelve un elemento JSX que representa un encabezado <h1>.

Componentes de Clase

Los componentes de clase son más complejos y se utilizan cuando se necesita manejar el estado o utilizar métodos del ciclo de vida. Aquí hay un ejemplo básico:

import React, { Component } from 'react';

class Greeting extends Component {
  render() {
    return <h1>Hello, {this.props.name}!</h1>;
  }
}

export default Greeting;

Explicación

  • Greeting es una clase que extiende React.Component.
  • El método render devuelve un elemento JSX.
  • this.props.name se utiliza para acceder a las props pasadas al componente.

Comparación entre Componentes Funcionales y de Clase

Característica Componentes Funcionales Componentes de Clase
Definición Función de JavaScript Clase de ES6
Manejo de Estado Hooks (useState) this.state
Ciclo de Vida Hooks (useEffect) Métodos del ciclo de vida (componentDidMount, etc.)
Simplicidad Más simples Más complejos

Ejemplo Práctico

Vamos a crear una aplicación simple que utiliza tanto componentes funcionales como de clase.

Paso 1: Crear un Componente Funcional

// src/components/FunctionalComponent.js
import React from 'react';

function FunctionalComponent(props) {
  return <p>This is a functional component. Message: {props.message}</p>;
}

export default FunctionalComponent;

Paso 2: Crear un Componente de Clase

// src/components/ClassComponent.js
import React, { Component } from 'react';

class ClassComponent extends Component {
  render() {
    return <p>This is a class component. Message: {this.props.message}</p>;
  }
}

export default ClassComponent;

Paso 3: Utilizar los Componentes en la Aplicación Principal

// src/App.js
import React from 'react';
import FunctionalComponent from './components/FunctionalComponent';
import ClassComponent from './components/ClassComponent';

function App() {
  return (
    <div>
      <FunctionalComponent message="Hello from Functional Component!" />
      <ClassComponent message="Hello from Class Component!" />
    </div>
  );
}

export default App;

Ejercicio Práctico

Ejercicio

  1. Crea un componente funcional llamado UserCard que acepte name y age como props y muestre esta información en un párrafo.
  2. Crea un componente de clase llamado UserProfile que acepte username y email como props y muestre esta información en un párrafo.
  3. Utiliza ambos componentes en tu aplicación principal (App.js).

Solución

Paso 1: Crear el Componente Funcional UserCard

// src/components/UserCard.js
import React from 'react';

function UserCard(props) {
  return <p>Name: {props.name}, Age: {props.age}</p>;
}

export default UserCard;

Paso 2: Crear el Componente de Clase UserProfile

// src/components/UserProfile.js
import React, { Component } from 'react';

class UserProfile extends Component {
  render() {
    return <p>Username: {this.props.username}, Email: {this.props.email}</p>;
  }
}

export default UserProfile;

Paso 3: Utilizar los Componentes en la Aplicación Principal

// src/App.js
import React from 'react';
import UserCard from './components/UserCard';
import UserProfile from './components/UserProfile';

function App() {
  return (
    <div>
      <UserCard name="John Doe" age={30} />
      <UserProfile username="johndoe" email="[email protected]" />
    </div>
  );
}

export default App;

Conclusión

En esta lección, hemos aprendido sobre los componentes en React, incluyendo componentes funcionales y de clase. También hemos visto cómo pasar datos a los componentes utilizando props y cómo utilizar estos componentes en una aplicación React. En la próxima lección, exploraremos las diferencias entre componentes funcionales y de clase en mayor profundidad y aprenderemos sobre el manejo del estado en los componentes.

Curso de React

Módulo 1: Introducción a React

Módulo 2: Componentes de React

Módulo 3: Trabajando con Eventos

Módulo 4: Conceptos Avanzados de Componentes

Módulo 5: Hooks de React

Módulo 6: Enrutamiento en React

Módulo 7: Gestión del Estado

Módulo 8: Optimización del Rendimiento

Módulo 9: Pruebas en React

Módulo 10: Temas Avanzados

Módulo 11: Proyecto: Construyendo una Aplicación Completa

© Copyright 2024. Todos los derechos reservados