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
exactatributo para una única ruta?yarn upgradede 4.3 a 4.4. ¿Está lanzado oficialmente?Al menos con react-router v4,
pathpuede 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/routees 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
pathsparámetro de matriz , que haga la expresión regular o la.maplógica de manera reutilizable.fuente
/^\/(home|users|widgets)/Ahora,/widgetscoincidirá, pero/dashboard/widgetsno coincidirá.Warning: Failed prop type: Invalid propruta` del tiporegexpproporcionado 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
mapembargo, 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
keyaccesorio.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.
/pagespor ejemplo. Conseguirás/pages/home/pages/users/pages/widgetsY luego resolverlo de forma detallada dentro del
Homecomponente.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