Como Manejar el Routing en React
Spanish (Español) translation by Marina Cardone (you can also view the original English article)
En uno de mis tutoriales anteriores, vimos como comenzar con React y JSX. En este tutorial, vamos a ver cómo empezar con la configuración y crear una app en React. Nos vamos a enfocar en como manejar el routing en una app de React utilizando react-router.
Comencemos
Vamos a comenzar iniciando nuestro proyecto utilizando el Node Package Manager (npm).
1 |
mkdir reactRoutingApp
|
2 |
cd reactRoutingApp
|
3 |
npm init |
Instala las librerías react y react-dom requeridas en el proyecto.
1 |
npm install react react-dom --save |
Vamos a utilizar el módulo de paquete webpack para este proyecto. Instala webpack y el server de desarrollo de webpack.
1 |
npm install webpack webpack-dev-server --save-dev |
Haremos uso de Babel para convertir sintaxis JSX a JavaScript. Instala el siguiente paquete de babel en tu proyecto.
1 |
npm install --save-dev babel-core babel-loader babel-preset-react babel-preset-es2015 |
webpack-dev-server requiere un archivo de configuración en el que definiremos el archivo de entrada, el archivo de salida y el cargador de babel. Así es como se verá nuestro archivo webpack.config.js:
1 |
module.exports = { |
2 |
entry: './app.js', |
3 |
module: { |
4 |
loaders: [ |
5 |
{
|
6 |
exclude: /node_modules/, |
7 |
loader: 'babel-loader?presets[]=es2015&presets[]=react' |
8 |
}
|
9 |
]
|
10 |
},
|
11 |
output: { |
12 |
filename: 'bundle.js' |
13 |
}
|
14 |
};
|
A continuación vamos a crear app.html donde la aplicación de React se renderizará.
1 |
<html>
|
2 |
<head>
|
3 |
<title>TutsPlus - React Routing Basic</title> |
4 |
</head>
|
5 |
<body>
|
6 |
<div id="app"></div> |
7 |
<script src="bundle.js"></script> |
8 |
</body>
|
9 |
</html>
|
Vamos a crear el punto de entrada en el archivo app.js para nuestra aplicación de React.
1 |
import React from 'react'; |
2 |
import {render} from 'react-dom'; |
3 |
|
4 |
const App = () => { |
5 |
return ( |
6 |
<h2>{'TutsPlus - Welcome to React Routing Basic!'}</h2> |
7 |
);
|
8 |
};
|
9 |
|
10 |
render( |
11 |
<App />, |
12 |
document.getElementById('app') |
13 |
);
|
Como vimos en el código anterior, importamos react y react-dom. Creamos un componente sin estado llamado App que retorna un título. La función render renderiza el componente adentro de el elemento app en la página app.html.
Iniciemos el servidor webpack, y la aplicación debería estar corriendo y mostrando el mensaje del componente.
1 |
webpack-dev-server |
Apunta tu browser a http://localhost:8080/app.html y tendrás la aplicación corriendo.
Creando Vistas de React
Ya tenemos la aplicación de React lista y corriendo. Empecemos por crear un par de vistas para nuestra aplicación de ruteo de React. Solo para mantenerlo simple, crearemos todos los componentes dentro del mismo archivo app.js
Vamos a crear un componente principal llamado navigation en app.js.
1 |
const Navigation = () => { |
2 |
return ( |
3 |
<section> |
4 |
<App /> |
5 |
<ul> |
6 |
<li>{'Home'}</li> |
7 |
<li>{'Contact'}</li> |
8 |
<li>{'About'}</li> |
9 |
</ul> |
10 |
</section> |
11 |
);
|
12 |
};
|
En el componente Navigation, tenemos el título de la aplicación y un menú de navegación recientemente creado para diferentes pantallas de la aplicación. El componente es bastante simple, con código HTML básico. Continuemos y creemos las pantallas para Contacto y Acerca de.
1 |
const About = () => { |
2 |
return ( |
3 |
<section> |
4 |
<h2>{'Welcome to About!'}</h2> |
5 |
</section> |
6 |
);
|
7 |
};
|
8 |
|
9 |
const Contact = () => { |
10 |
return ( |
11 |
<section> |
12 |
<h2>{'Welcome to Contact!'}</h2> |
13 |
</section> |
14 |
);
|
15 |
};
|
Recién creamos un componente para renderizar las pantallas de About y Contact.
Conectando las Vistas Utilizando react-router
Para poder conectar diferentes vistas haremos uso de react-router. Instala react-router utilizando npm.
1 |
npm install react-router --save |
Importa las librerías requeridas para react-router en app.js.
1 |
import {Link, Route, Router} from 'react-router'; |
En lugar de especificar qué componente mostrar, definiremos diferentes rutas para nuestra aplicación. Para eso haremos uso de react-router.
Vamos a definir las rutas de las pantallas Home, Contact y About.
1 |
render( |
2 |
<Router> |
3 |
<Route |
4 |
component={Navigation} |
5 |
path="/" |
6 |
/>
|
7 |
<Route |
8 |
component={About} |
9 |
path="/about" |
10 |
/>
|
11 |
<Route |
12 |
component={Contact} |
13 |
path="/contact" |
14 |
/>
|
15 |
</Router>, |
16 |
document.getElementById('app') |
17 |
);
|
Cuando el usuario visita la ruta /, el componente de Navigation se renderiza, cuando visita /about el componente About se renderiza, y /contact renderiza el componente Contact.
Modifica las pantallas About y Contact para incluir un link de regreso a la pantalla inicial. Para vincular pantallas, utilizamos Link, que funciona de manera similar a la etiqueta anchor de HTML.
1 |
const About = () => { |
2 |
return ( |
3 |
<section> |
4 |
<h2>{'Welcome to About!'}</h2> |
5 |
<Link to="/">{'Back to Home'}</Link> |
6 |
</section> |
7 |
);
|
8 |
};
|
9 |
|
10 |
const Contact = () => { |
11 |
return ( |
12 |
<section> |
13 |
<h2>{'Welcome to Contact!'}</h2> |
14 |
<Link to="/">{'Back to Home'}</Link> |
15 |
</section> |
16 |
);
|
17 |
};
|
Modifica el componente Navigation para incluir el link a las otras pantallas desde la pantalla inicial.
1 |
const Navigation = () => { |
2 |
return ( |
3 |
<section> |
4 |
<App /> |
5 |
<ul> |
6 |
<li>{'Home'}</li> |
7 |
<li> |
8 |
<Link to="/contact">{'Contact'}</Link> |
9 |
</li> |
10 |
<li> |
11 |
<Link to="/about">{'About'}</Link> |
12 |
</li> |
13 |
</ul> |
14 |
</section> |
15 |
);
|
16 |
};
|
Guarda los cambios y reinicia el servidor webpack.
1 |
webpack-dev-server |
Apunta tu browser a http://localhost:8080/app.html, y deberías tener la aplicación corriendo con el routing básico implementado.
Cerrando
En este tutorial, vimos cómo comenzar creando una app de React y conectando diferentes componentes utilizando react-router. Aprendimos como definir diferentes rutas y vincularlas utilizando react-router.
Intentaste utilizar react-router o alguna otra librería de ruteo? Déjanos saber en los comentarios.
El código fuente para este tutorial está disponible en GitHub.



