Quiero declarar una ruta con un parámetro de ruta opcional, por lo tanto, cuando lo agrego, la página hace algo extra (por ejemplo, llenar algunos datos):
http: // localhost / app / path / to / page <= renderizar la página http: // localhost / app / path / to / page / pathParam <= renderizar la página con algunos datos de acuerdo con el pathParam
En mi enrutador de reacción, tengo las siguientes rutas para admitir las dos opciones (este es un ejemplo simplificado):
<Router history={history}>
<Route path="/path" component={IndexPage}>
<Route path="to/page" component={MyPage}/>
<Route path="to/page/:pathParam" component={MyPage}/>
</Route>
</Router>
Mi pregunta es, ¿podemos declararlo en una ruta? Si agrego solo la segunda fila, entonces no se encuentra la ruta sin el parámetro.
EDITAR # 1:
La solución mencionada aquí sobre la siguiente sintaxis no funcionó para mí, ¿es adecuada? ¿Existe en la documentación?
<Route path="/product/:productName/?:urlID?" handler={SomeHandler} />
Mi versión del router de reacción es: 1.0.3
/route(/:category/(:article)
Para cualquier usuario de React Router v4 que llegue aquí después de una búsqueda, los parámetros opcionales en a
<Route>
se denotan con un?
sufijo.Aquí está la documentación relevante:
https://reacttraining.com/react-router/web/api/Route/path-string
https://www.npmjs.com/package/path-to-regexp#optional
Ejemplo simple de una sección paginada de un sitio al que se puede acceder con o sin un número de página.
fuente
<Match pattern />
ahora es<Route path />
nuevamente, pero el sufijo de signo de interrogación sigue siendo el enfoque ahora para manejar parámetros opcionales.players
,players/123
,players/123/edit
,players?unseen=true
. El parámetro opcional?unseen
no funciona para mí. aunque probé todas las soluciones de esta discusión. ¿Podría ayudarme con la cadena de ruta adecuada, que manejará esto? ¡Gracias por adelantado!example.com/search?query=test
intentar usar el siguiente patrón/:search(search)
.Sintaxis de trabajo para múltiples parámetros opcionales:
Ahora, url puede ser:
fuente
para react-router V5 y superior use la sintaxis siguiente para múltiples rutas
fuente