¿Alguien puede explicar la diferencia entre
<Route exact path="/" component={Home} />
y
<Route path="/" component={Home} />
No sé el significado de "exacto"
¿Alguien puede explicar la diferencia entre
<Route exact path="/" component={Home} />
y
<Route path="/" component={Home} />
No sé el significado de "exacto"
Respuestas:
En este ejemplo, nada realmente. los
exact
parámetro entra en juego cuando tienes múltiples rutas que tienen nombres similares:Por ejemplo, imagine que tenemos un
Users
componente que muestra una lista de usuarios. También tenemos unCreateUser
componente que se utiliza para crear usuarios. La url paraCreateUsers
debe estar anidada debajoUsers
. Entonces nuestra configuración podría verse así:Ahora el problema aquí, cuando vamos al
http://app.com/users
enrutador, pasará por todas nuestras rutas definidas y devolverá la PRIMERA coincidencia que encuentre. Entonces, en este caso,Users
primero encontraría la ruta y luego la devolvería. Todo bien.Pero, si fué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/users
lo que coincide parcialmente/users/create
, por lo que devolvería laUsers
ruta de forma incorrecta .El
exact
parámetro 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 nuestraUsers
ruta para que solo coincida con/users
:Los documentos explican
exact
en detalle y dan otros ejemplos.fuente
exact
debería ser el valor predeterminado en mi opinión/admin//users
en el componente Administrador y/admin/users/create
en el componente raíz? Actualmente tengo esta situación y laexact
solución típica no funciona correctamente.En resumen, si tiene múltiples rutas definidas para el enrutamiento de su aplicación, encerradas con un
Switch
componente como este;Luego, debe poner una
exact
palabra clave en la ruta, cuya 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 unaexact
palabra clave para diferenciarla de otras rutas que comienzan con/
. La razón también es similar a la/functions
ruta. Si desea usar otra ruta de ruta como/functions-detail
o/functions/open-door
que incluye/functions
en ella, entonces debe usarlaexact
para la/functions
ruta.fuente
Echa un vistazo aquí: https://reacttraining.com/react-router/core/api/Route/exact-bool
exacto: bool
Cuando es verdadero, solo coincidirá si la ruta coincide
location.pathname
exactamente.fuente
La respuesta más corta es
Por favor intente esto.
fuente
exact
atributo / accesorio y, por lo tanto, seguramente no es una "respuesta". Debería tratar de abordar la pregunta que realmente se está haciendo en lugar de dar una solución a un problema que no está seguro de que OP realmente tenga.