Para seguir este tutorial, necesitarás tener instalados Node.js y npm en tu máquina. También se asume que tienes un conocimiento básico de React.
Primero, configura un nuevo proyecto de React si aún no tienes uno. Puedes hacerlo usando Create React App:
npx create-react-app carrusel-react
cd carrusel-react
npm start
Esto creará un nuevo proyecto y lo iniciará en http://localhost:3000
.
Crea un nuevo archivo llamado Carrusel.js
en la carpeta src/components
(debes crear esta carpeta si no existe).
// src/components/Carrusel.js
import React, { useState } from 'react';
import './Carrusel.css';
const Carrusel = ({ items }) => {
const [currentIndex, setCurrentIndex] = useState(0);
const prevSlide = () => {
const index = currentIndex === 0 ? items.length - 1 : currentIndex - 1;
setCurrentIndex(index);
};
const nextSlide = () => {
const index = currentIndex === items.length - 1 ? 0 : currentIndex + 1;
setCurrentIndex(index);
};
return (
<div className="carrusel">
<button className="carrusel-button prev" onClick={prevSlide}>‹</button>
<div className="carrusel-content">
{items.map((item, index) => (
<div
key={index}
className={`carrusel-item ${index === currentIndex ? 'active' : ''}`}
>
{item}
</div>
))}
</div>
<button className="carrusel-button next" onClick={nextSlide}>›</button>
</div>
);
};
export default Carrusel;
Crea un archivo CSS llamado Carrusel.css
en la misma carpeta src/components
.
/* src/components/Carrusel.css */
.carrusel {
position: relative;
width: 80%;
margin: auto;
overflow: hidden;
border: 2px solid #ddd;
border-radius: 10px;
}
.carrusel-content {
display: flex;
transition: transform 0.5s ease-in-out;
}
.carrusel-item {
min-width: 100%;
transition: opacity 0.5s ease-in-out;
opacity: 0;
}
.carrusel-item.active {
opacity: 1;
}
.carrusel-button {
position: absolute;
top: 50%;
transform: translateY(-50%);
background: rgba(0, 0, 0, 0.5);
color: white;
border: none;
padding: 10px;
cursor: pointer;
border-radius: 50%;
z-index: 10;
}
.carrusel-button.prev {
left: 10px;
}
.carrusel-button.next {
right: 10px;
}
Ahora, utiliza el componente Carrusel
en tu aplicación. Abre App.js
y modifica el contenido para incluir el carrusel.
// src/App.js
import React from 'react';
import Carrusel from './components/Carrusel';
import './App.css';
function App() {
const items = [
<div className="item" style={{ backgroundColor: 'red' }}>Slide 1</div>,
<div className="item" style={{ backgroundColor: 'blue' }}>Slide 2</div>,
<div className="item" style={{ backgroundColor: 'green' }}>Slide 3</div>,
<div className="item" style={{ backgroundColor: 'yellow' }}>Slide 4</div>,
];
return (
<div className="App">
<h1>React Carrusel</h1>
<Carrusel items={items} />
</div>
);
}
export default App;
Para un mejor aspecto visual, puedes añadir algunos estilos básicos en App.css
.
/* src/App.css */
.App {
text-align: center;
}
.item {
display: flex;
align-items: center;
justify-content: center;
height: 300px;
color: white;
font-size: 24px;
}
Carrusel
El componente Carrusel
recibe un arreglo de elementos a través de las propiedades (props
). Usa el estado de React (useState
) para manejar el índice del elemento actualmente visible (currentIndex
).
active
al elemento que debe ser visible, permitiendo que los estilos de CSS gestionen la visibilidad.
Crear un carrusel en React sin librerías externas es una excelente manera de comprender mejor los fundamentos de React y CSS. Este carrusel básico puede ser mejorado y extendido para incluir características adicionales como indicadores de página, arrastrar y soltar, o incluso integración con bibliotecas de animación más avanzadas. Experimenta y ajusta el código para adaptarlo a tus necesidades específicas, y disfruta creando componentes interactivos y dinámicos con React.
Jorge García
Fullstack developer