Cuando tenemos lista la aplicación debemos subir la misma a nuestro hosting, para ello debemos empaquetarla utilizando la aplicación npm.
Vamos a crear una aplicación y posteriormente ver los pasos para subir la misma al sitio web.
Crear una aplicación que muestre un tablero de ajedrez y permita mediante drag and drop arrastras piezas.
Como primer paso creamos una aplicación con create-react-app:
npx create-react-app proyecto017
Creamos dos componentes, una llamada Tablero y otra llamada Casilla. Tenemos luego tres componentes en total: App, Tablero y Casilla:
Debemos además modificar el archivo App.js donde creamos una componente de tipo Tablero.
App.js
import Tablero from './Tablero'; function App() { return (<div> <h1>Tablero de ajedrez con Drag and Drop 😀</h1> <Tablero/> </div>); } export default App;
Tablero.js
import Casilla from './Casilla'; import './Tablero.css'; import { useEffect, useState } from "react"; function Tablero() { const [tablero, setTablero] = useState( [ ['\u265C', '\u265E', '\u265D','\u265A', '\u265A', '\u265D', '\u265E', '\u265C'], ['\u265F', '\u265F', '\u265F','\u265F', '\u265F', '\u265F', '\u265F', '\u265F'], ['', '', '','', '', '', '', ''], ['', '', '','', '', '', '', ''], ['', '', '','', '', '', '', ''], ['', '', '','', '', '', '', ''], ['\u2659', '\u2659', '\u2659','\u2659', '\u2659', '\u2659', '\u2659', '\u2659'], ['\u2656', '\u2658', '\u2657','\u2655', '\u2654', '\u2657', '\u2658', '\u2656'] ] ) useEffect(() => { function drag(ev) { ev.dataTransfer.setData("fila", ev.target.attributes.fila.value); ev.dataTransfer.setData("columna", ev.target.attributes.columna.value); ev.dataTransfer.setData("valor", ev.target.attributes.valor.value); } function permitirDrop(ev) { ev.preventDefault(); } function drop(ev) { ev.preventDefault(); const fila = parseInt(ev.dataTransfer.getData("fila")) const columna = parseInt(ev.dataTransfer.getData("columna")) const valor = ev.dataTransfer.getData("valor") let nuevo = [...tablero]; for (let f = 0; f < 8; f++) { for (let c = 0; c < 8; c++) { if (parseInt(ev.target.attributes.fila.value) === f && parseInt(ev.target.attributes.columna.value) === c) { nuevo[f][c] = valor if (f!==fila || c!==columna) nuevo[fila][columna] = '' } } } setTablero(nuevo) } const casillas = document.querySelectorAll('.casilla') for (let casilla of casillas) { casilla.addEventListener('dragstart', drag) casilla.addEventListener('dragover', permitirDrop); casilla.addEventListener('drop', drop); } return () => { const casillas = document.querySelectorAll('.casilla') for (let casilla of casillas) { casilla.removeEventListener('dragstart', drag) casilla.removeEventListener('dragover', permitirDrop); casilla.removeEventListener('drop', drop); } } }, [tablero]) return ( <div className="tablero"> {tablero.map((fila, indicef) => { return fila.map((casilla, indicec) => { return (<Casilla valor={casilla} fila={indicef} columna={indicec} key={indicef + indicec} pieza={casilla} color={(indicef + indicec) % 2 === 0 ? 'blanco' : 'negro'} />) }) })} </div> ); } export default Tablero
Tablero.cs
.tablero { display: grid; grid-template-rows: repeat(8, 60px); grid-template-columns: repeat(8, 60px); }
Casilla.js
import './Casilla.css' function Casilla(props) { return ( <span fila={props.fila} columna={props.columna} draggable="true" className={props.color==='negro'?'casillanegra casilla':'casillablanca casilla'} valor={props.pieza}>{unescape(props.pieza)}</span> ); } export default Casilla
Casilla.css
.casillanegra { background-color:gray; width: 60px; height: 60px; font-size: 50px; text-align: center; } .casillablanca { background-color:yellow; width: 60px; height: 60px; font-size: 50px; text-align: center; }
Ya tenemos la aplicación ejecutandose correctamente en forma local en nuestra computadora:
Abrimos el archivo 'package.json' y agregamos la propiedad "homepage":
Disponemos el nombre de dominio donde se ejecutará la aplicación React por ejemplo:
https://www.scratchya.com.ar
Es muy importante tener en cuenta que si almacenamos la aplicación en una subcarpeta de nuestro hosting debemos indicar la misma, por ejemplo yo la almacené en:
https://www.scratchya.com.ar/reactya/proyecto017/
Creamos la aplicación con npm:
npm run build
Debemos subir a nuestro hosting todo el contenido de la carpeta 'build' que se crea con el comando anterior.
Podemos probar ahora la aplicación recuperando la misma desde nuestro hosting: Tablero ajedrez