⊗jsrxPmATSL 56 of 57 menu

Lista de vendedores en Redux

En las lecciones anteriores terminamos con el material principal. Ahora usando thunk obtenemos la lista de productos del servidor y podemos guardar un nuevo producto en el servidor. Vamos a ocuparnos de los vendedores. Después de todo, recibimos datos también para ellos. Hagamos una página separada con la lista de vendedores.

Abramos nuestra aplicación de productos, y en ella la carpeta sellers. Creemos en esta carpeta el archivo SellersList.jsx. Aquí usaremos useSelector, Link y selectAllSellers, cuyo código escribiremos en sellersSlice.js un poco más tarde:

import { useSelector } from 'react-redux' import { Link } from 'react-router-dom' import { selectAllSellers } from './sellersSlice'

A continuación crearemos el propio SellersList. En él obtendremos todos los vendedores usando el hook useSelector, luego obtendremos el maquetado para la lista de vendedores en el bucle map, donde cada nombre de vendedor nos llevará a su página. Y al final retornaremos el maquetado con el título y la lista obtenida:

export const SellersList = () => { const sellers = useSelector(selectAllSellers) const sellersToRender = sellers.map((seller) => ( <li key={seller.id}> <Link to={`/sellers/${seller.id}`}>{seller.name}</Link> </li> )) return ( <div> <h2>Vendedores:</h2> <ul>{sellersToRender}</ul> </div> ) }

Luego entremos en el archivo sellersSlice.js y por analogía con los selectores en productsSlice.js creemos al final del archivo dos selectores después de exportar el reductor:

export const selectAllSellers = (state) => state.sellers export const selectSellerById = (state, sellerId) => state.sellers.find((seller) => seller.id === sellerId)

Ahora necesitamos especificar la ruta para la página con la lista, para ello abramos el archivo App.jsx y en el array de rutas hijas children agreguemos otro objeto (no olvide importar el componente SellersList):

{ path: '/sellers', element: <SellersList />, },

Para que nuestro enlace 'Vendedores' en el menú funcione, entremos en el archivo root.jsx (¡cuánto tiempo ha pasado... ) y reemplacemos la etiqueta a por el elemento NavLink:

<NavLink to="/sellers" end> Vendedores </NavLink>

Y por último. Para que en nuestro menú se resalte el enlace activo, y sea entendible en qué página nos encontramos, agregaremos un estilo en index.css:

nav a.active { color: purple; }

Ejecutemos nuestra aplicación. Ahora podemos entrar a la página de vendedores, haciendo clic en 'Vendedores' en el menú. Por supuesto, antes necesitamos hacer clic en 'Productos' en el menú, de lo contrario nuestros productos no se cargarán. En la siguiente lección haremos una página para cada vendedor y con esto terminaremos el estudio de este tutorial de Redux.

Abra su aplicación de estudiantes. Habiendo estudiado los materiales de la lección, en la carpeta teachers crea el archivo TeachersList.jsx. Usando este componente usted mostrará la lista de profesores. Importe en él los componentes y hooks necesarios.

Escriba el código para el componente TeachersList, obtenga en él todos los profesores y haga una lista de profesores teachersToRender, que en cada línea de esta lista se muestren sus apellidos e iniciales, y entre paréntesis la asignatura que imparten. Que cada nombre completo sea un enlace que lleve a una página separada para cada profesor. Luego al final del código del componente retorne el maquetado con el título y la lista creada.

Al final del archivo teachersSlice.js crea un par de funciones selectoras selectAllTeachers y selectTeacherById, como se muestra en la lección.

En App.jsx conecta otra ruta hija para la página de profesores.

En el archivo root.jsx en el menú para 'Profesores' reemplace la etiqueta a por NavLink, como se muestra en la lección. Haz que el enlace activo en el menú se resalte de alguna manera, agregando para ello estilos en index.css.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar