6 abril, 2025
Instalar React JS en Laravel con Vite JS
Integrar Laravel 12 como backend API con React y Vite como frontend separado. Tutorial práctico para crear un sistema de suscriptores con Axios y CORS.
Suscríbete a nuestro canal en Youtube
SuscríbirseA continuación, te explico cómo integrar Laravel con React.js usando Vite.js como bundler en lugar de create-react-app o el enfoque predeterminado de Laravel con Breeze. Usaremos una tabla de suscriptores como ejemplo práctico. Te guiaré paso a paso para ambos enfoques: Laravel como API con React separado y Laravel con React integrado.
Laravel como Backend (API) + React con Vite como Frontend Separado
Paso 1: Configurar Laravel como API
-
Instalar Laravel:
bash
composer global require laravel/installer laravel new laravelReactApi cd laravelReactApi - Configurar la Base de Datos: Edita .env:
text
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravelreactapi DB_USERNAME=root DB_PASSWORD= - Crear Modelo y Migración para Suscriptores:
bash
php artisan make:model Subscriber -mcr- Edita la migración (database/migrations/xxxx_create_subscribers_table.php):
php
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateSubscribersTable extends Migration { public function up() { Schema::create('subscribers', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->boolean('active')->default(true); $table->timestamps(); }); } public function down() { Schema::dropIfExists('subscribers'); } } - Ejecuta la migración:
bash
php artisan migrate
- Edita la migración (database/migrations/xxxx_create_subscribers_table.php):
- Configurar el Controlador: Edita app/Http/Controllers/SubscriberController.php:
php
namespace App\Http\Controllers; use App\Models\Subscriber; use Illuminate\Http\Request; class SubscriberController extends Controller { public function index() { return Subscriber::all(); } public function store(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:subscribers,email', ]); $subscriber = Subscriber::create($request->all()); return response()->json($subscriber, 201); } } - Definir Rutas API: En routes/api.php:
php
use App\Http\Controllers\SubscriberController; Route::get('/subscribers', [SubscriberController::class, 'index']); Route::post('/subscribers', [SubscriberController::class, 'store']); - Habilitar CORS: Instala el paquete CORS:
bash
Edita config/cors.php:php artisan config:publish corsphp
return [ /* |-------------------------------------------------------------------------- | Cross-Origin Resource Sharing (CORS) Configuration |-------------------------------------------------------------------------- | | Here you may configure your settings for cross-origin resource sharing | or "CORS". This determines what cross-origin operations may execute | in web browsers. You are free to adjust these settings as needed. | | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS | */ 'paths' => ['api/*', 'sanctum/csrf-cookie'], 'allowed_methods' => ['*'], 'allowed_origins' => ['*'], 'allowed_origins_patterns' => [], 'allowed_headers' => ['*'], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => false, ]; - Iniciar el Servidor:
bash
php artisan serve
Paso 2: Configurar React con Vite
-
Crear el Proyecto React con Vite:
bash
npm create vite@latest frontendReact -- --template react cd frontendReact npm install - Instalar Axios:
bash
npm install axios - Crear un Componente para Suscriptores: Edita src/App.jsx:
jsx
import { useEffect, useState } from 'react' import './App.css' import axios from 'axios'; function App() { const [subscribers, setSubscribers] = useState([]); const [name, setName] = useState(''); const [email, setEmail] = useState(''); useEffect(()=>{ fetchSubscribers() },[]); const fetchSubscribers = async()=>{ const response = await axios.get("http://localhost:8000/api/suscribers"); setSubscribers(response.data) } const handleSubmit = async (e) => { e.preventDefault(); const response = await axios.post("http://localhost:8000/api/suscribers",{name,email}); setSubscribers([...subscribers,response.data]); setName(''); setEmail(''); } return( <div> <form onSubmit={handleSubmit}> <input type="text" value={name} onChange={(e) => setName(e.target.value)} placeholder="Nombre" /> <input type="email" value={email} onChange={(e) => setEmail(e.target.value)} placeholder="Correo" /> <button type="submit">Suscribir</button> </form> <ul> { subscribers.map((subscriber)=>( <li key={subscriber.id}>{subscriber.name} - {subscriber.email} ({subscriber.active?'Activo':'Inactivo'})</li> )) } </ul> </div> ) } export default App - Iniciar Vite:
bash
Vite corre por defecto en http://localhost:5173.npm run dev
Resultado
- Laravel en http://localhost:8000.
- React con Vite en http://localhost:5173.
- CORS permite la comunicación entre ambos.
Leido 7257 veces | 6 usuarios
Descarga del código fuente Laravel de Instalar React JS en Laravel con Vite JS
Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.
Opciones de descarga
- Usuarios Registrados: Inicia sesión para descarga inmediata.
- Nuevos Usuarios: Regístrate y descarga.
