with route react link reactjs react-router react-router-dom

reactjs - route - Reaccionar: diferencia entre<Ruta de ruta exacta="/"/> y<Ruta de ruta="/"/>



redirect react (3)

Alguien puede explicar la diferencia entre

<Route exact path="/" component={Home} />

y

<Route path="/" component={Home} />

No sé el significado de "exacto"


En este ejemplo, nada realmente. El parámetro exact entra en juego cuando tienes varias rutas que tienen nombres similares:

Por ejemplo, imagine que tenemos un componente Users que muestra una lista de usuarios. También tenemos un componente CreateUser que se usa para crear usuarios. La url para CreateUsers debe estar anidada en Users . Entonces nuestra configuración podría verse así:

<Route path="/users" component={Users} /> <Route path="/users/create" component={CreateUser} />

Ahora el problema aquí, cuando vamos a http://app.com/users el enrutador recorrerá todas nuestras rutas definidas y devolverá la PRIMERA coincidencia que encuentre. Entonces, en este caso, primero encontraría la ruta de los Users y luego la devolvería. Todo bien.

Pero, si visitáramos http://app.com/users/create , volvería a pasar por todas nuestras rutas definidas y devolvería la PRIMERA coincidencia que encuentre. React router hace una coincidencia parcial, por lo que /users coincide parcialmente con /users/create , por lo que devolvería incorrectamente la ruta de los Users nuevamente.

El parámetro exact deshabilita la coincidencia parcial para una ruta y se asegura de que solo devuelva la ruta si la ruta es una coincidencia EXACTA con la url actual.

Entonces, en este caso, debemos agregar exact a nuestra ruta de Users para que solo coincida con /users :

<Route exact path="/users" component={Users} /> <Route path="/users/create" component={CreateUser} />

Los documentos explican exact en detalle y dan otros ejemplos.


En resumen, si tiene múltiples rutas definidas para el enrutamiento de su aplicación, incluidas con el componente Switch como este;

<Switch> <Route exact path="/" component={Home} /> <Route path="/detail" component={Detail} /> <Route exact path="/functions" component={Functions} /> <Route path="/functions/:functionName" component={FunctionDetails} /> </Switch>

Luego tiene que poner la palabra clave exact a la ruta, que su ruta también está incluida en la ruta de otra ruta. Por ejemplo, la ruta de inicio / se incluye en todas las rutas, por lo que debe tener exact palabra clave exact para diferenciarla de otras rutas que comienzan con / . La razón también es similar a /functions ruta. Si desea usar otra ruta de ruta como /functions-detail o /functions/open-door que incluye /functions en ella, entonces debe usar exact para la ruta /functions .


Las respuestas son geniales. Sin embargo, uno puede tener una duda como "¿Por qué no podemos tener exact para todas las rutas entonces?" Imagine una URL que sea algo como esto. https://yourreactwebsite.com/getUsers/userId= ? Este es un ejemplo en el que la ID del usuario se alimentará dinámicamente en la URL y, por lo tanto, no podemos ir con el accesorio exact en su enrutador aquí.