es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

react-router-dom switch no está renderizando componentes después de la ruta dinámica.

He estado siguiendo un tutorial de comercio electrónico y construyendo sobre él. Soy nuevo en React y React Router Dom.
He establecido una ruta dinámica para las páginas de productos individuales, y ahora estoy tratando de agregar algunas rutas nuevas, por ejemplo contacto, acerca de, etc. Si agrego las nuevas rutas encima de la ruta dinámica, se renderizan correctamente, pero si coloco las rutas debajo de la que tiene la ruta dinámica, por ejemplo /hello, no se renderizan. ¿Es este un comportamiento normal?

“`jsx
<router>

<div>
<navbar totalitems="{cart.total_items}"></navbar>
<switch>
<route exact="" path="/">
<home products="{products}" handleaddtocart="{handleAddToCart}" fetchproduct="{fetchProduct}"></home>
</route>
<route exact="" path="/checkout">
<checkout cart="{cart}" order="{order}" handlecapturecheckout="{handleCaptureCheckout}" error="{errorMessage}" refreshcart="{refreshCart}"></checkout>
</route>
<route exact="" path="/cart">
<cart cart="{cart}" handleupdatecartquantity="{handleUpdateCartQuantity}" handleremovefromcart="{handleRemoveFromCart}" handleemptycart="{handleEmptyCart}"></cart>
</route>
<route exact="" path="/contact">
<contact></contact>
</route>
<route exact="" path="/:id">
<details product="{product}" handleaddtocart="{handleAddToCart}"></details>
</route>
<route exact="" path="/hello">
<h1>Hello World</h1>
</route>
</switch>
</div>

<router>
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, este es un comportamiento normal. React Router utiliza la primera ruta coincidente para renderizar el componente, por lo que si la ruta dinámica se coloca antes de las nuevas rutas, coincidirá primero con la ruta dinámica y renderizará el componente “Details” en lugar del componente de la nueva ruta. Para solucionar esto, simplemente mueve las nuevas rutas por encima de la ruta dinámica en la declaración “Switch”, o utiliza la palabra clave “exact” en la ruta dinámica para asegurarte de que solo coincida exactamente con esa ruta y no con ninguna subruta.

Comments are closed.