Estoy usando el mismo componente para tres rutas diferentes:
<Router>
<Route path="/home" component={Home} />
<Route path="/users" component={Home} />
<Route path="/widgets" component={Home} />
</Router>
¿Hay alguna forma de combinarlo, para ser como:
<Router>
<Route path=["/home", "/users", "/widgets"] component={Home} />
</Router>
javascript
reactjs
path
react-router
url-routing
Chetan Garg
fuente
fuente
Respuestas:
A partir de react-router v4.4.0-beta.4 , y oficialmente en v5.0.0, ahora puede especificar una serie de rutas que se resuelven en un componente, por ejemplo
Cada ruta de la matriz es una cadena de expresión regular.
La documentación para este enfoque se puede encontrar aquí .
fuente
exact
atributo para una única ruta?yarn upgrade
de 4.3 a 4.4. ¿Está lanzado oficialmente?Al menos con react-router v4,
path
puede ser una cadena de expresión regular, por lo que puede hacer algo como esto:Como puede ver, es un poco detallado, por lo que si su
component
/route
es tan simple como este, probablemente no valga la pena.Y, por supuesto, si esto surge con frecuencia, siempre puede crear un componente de envoltura que tome un
paths
parámetro de matriz , que haga la expresión regular o la.map
lógica de manera reutilizable.fuente
/^\/(home|users|widgets)/
Ahora,/widgets
coincidirá, pero/dashboard/widgets
no coincidirá.Warning: Failed prop type: Invalid prop
ruta` del tiporegexp
proporcionado aRoute
, esperadostring
.`<Route path="/(new|edit)/user/:id?" ... />
path={`/(${ROUTES.HOME}|${ROUTES.HOME_1})/`}
No creo que lo sea si usa una versión de React Router inferior a la v4.
Sin
map
embargo, puede usar un como lo haría con cualquier otro componente JSX:EDITAR
También puede utilizar una expresión regular para la ruta en react-router v4 siempre que sea compatible con la ruta a la expresión regular . Consulte la respuesta de @ Cameron para obtener más información.
fuente
key
accesorio.A partir de react-route-dom v5.1.2, puede pasar varias rutas como se muestra a continuación
Y, obviamente, debe importar el archivo jsx de inicio en la parte superior.
fuente
Otra opción: usar prefijo de ruta.
/pages
por ejemplo. Conseguirás/pages/home
/pages/users
/pages/widgets
Y luego resolverlo de forma detallada dentro del
Home
componente.fuente
Según los documentos de React Router, el proptype 'path' es de tipo string. Por lo tanto, no hay forma de que pueda pasar una matriz como accesorios al componente de ruta.
Si su intención es solo cambiar la ruta, puede usar el mismo componente para una ruta diferente sin problemas con eso
fuente
A partir de react-router v4.4, puede hacer algo como esto a continuación.
almacenar la ruta en una variable y pasar a continuación y usar '|' Operador.
por lo que para todas las rutas que coincidan, representará
component={Home}
cuál es su necesidad.fuente