1. Code
  2. JavaScript
  3. React

Como Manejar el Routing en React

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.
Scroll to top

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.