Desde el enlace que publicó en los documentos, hacia la parte inferior de la página:
// import React, {Component, Props, ReactDOM} from 'react';
// import {Route, Switch} from 'react-router'; etc etc
// this snippet has it all attached to window since its in browser
const {
BrowserRouter,
Switch,
Route,
Link,
NavLink
} = ReactRouterDOM;
class World extends React.Component {
constructor(props) {
super(props);
console.dir(props);
this.state = {
fromIdeas: props.match.params.WORLD || 'unknown'
}
}
render() {
const { match, location} = this.props;
return (
<React.Fragment>
<h2>{this.state.fromIdeas}</h2>
<span>thing:
{location.query
&& location.query.thing}
</span><br/>
<span>another1:
{location.query
&& location.query.another1
|| 'none for 2 or 3'}
</span>
</React.Fragment>
);
}
}
class Ideas extends React.Component {
constructor(props) {
super(props);
console.dir(props);
this.state = {
fromAppItem: props.location.item,
fromAppId: props.location.id,
nextPage: 'world1',
showWorld2: false
}
}
render() {
return (
<React.Fragment>
<li>item: {this.state.fromAppItem.okay}</li>
<li>id: {this.state.fromAppId}</li>
<li>
<Link
to={{
pathname: `/hello/${this.state.nextPage}`,
query:{thing: 'asdf', another1: 'stuff'}
}}>
Home 1
</Link>
</li>
<li>
<button
onClick={() => this.setState({
nextPage: 'world2',
showWorld2: true})}>
switch 2
</button>
</li>
{this.state.showWorld2
&&
<li>
<Link
to={{
pathname: `/hello/${this.state.nextPage}`,
query:{thing: 'fdsa'}}} >
Home 2
</Link>
</li>
}
<NavLink to="/hello">Home 3</NavLink>
</React.Fragment>
);
}
}
class App extends React.Component {
render() {
return (
<React.Fragment>
<Link to={{
pathname:'/ideas/:id',
id: 222,
item: {
okay: 123
}}}>Ideas</Link>
<Switch>
<Route exact path='/ideas/:id/' component={Ideas}/>
<Route path='/hello/:WORLD?/:thing?' component={World}/>
</Switch>
</React.Fragment>
);
}
}
ReactDOM.render((
<BrowserRouter>
<App />
</BrowserRouter>
), document.getElementById('ideas'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-router-dom/4.3.1/react-router-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-router/4.3.1/react-router.min.js"></script>
<div id="ideas"></div>
De la guía de actualización de 1.xa 2.x:
<Link to>
, onEnter e isActive usan descriptores de ubicación
<Link to>
ahora puede tomar un descriptor de ubicación además de cadenas. La consulta y los accesorios de estado están en desuso.
// v1.0.x
<Link to="/foo" query={{ the: 'query' }}/>
// v2.0.0
<Link to={{ pathname: '/foo', query: { the: 'query' } }}/>
// Sigue siendo válido en 2.x
<Link to="/foo"/>
Del mismo modo, la redirección desde un enlace onEnter ahora también usa un descriptor de ubicación.
// v1.0.x
(nextState, replaceState) => replaceState(null, '/foo')
(nextState, replaceState) => replaceState(null, '/foo', { the: 'query' })
// v2.0.0
(nextState, replace) => replace('/foo')
(nextState, replace) => replace({ pathname: '/foo', query: { the: 'query' } })
Para componentes similares a enlaces personalizados, lo mismo se aplica para router.isActive, anteriormente history.isActive.
// v1.0.x
history.isActive(pathname, query, indexOnly)
// v2.0.0
router.isActive({ pathname, query }, indexOnly)
/ideas/${this.props.testvalue}
}> {this.props.testvalue} </Link><Link to={`/ideas/${this.props.testvalue}`}>{this.props.testvalue}</Link>
con<Link to={'/ideas/'+this.props.testvalue }>{this.props.testvalue}</Link>
Hay una manera de pasar más de un parámetro. Puede pasar "a" como objeto en lugar de cadena.
fuente
Tuve el mismo problema para mostrar los detalles de un usuario de mi aplicación.
Puedes hacerlo:
o
y
para obtener esto a través
this.props.match.params.value
de su clase CreateIdeaView.Puedes ver este video que me ayudó mucho: https://www.youtube.com/watch?v=ZBxMljq9GSE
fuente
en cuanto a react-router-dom 4.xx ( https://www.npmjs.com/package/react-router-dom ) puede pasar parámetros al componente para enrutar a través de:
vinculación a través (teniendo en cuenta que el valor testValue se pasa al componente correspondiente (por ejemplo, el componente de la aplicación anterior) que representa el enlace)
pasando accesorios a su constructor de componentes, el valor param estará disponible vía
fuente
Ver esta publicación para referencia
Lo simple es que:
Ahora quieres acceder a él:
fuente
Después de instalar
react-router-dom
y otro extremo donde se redirige la ruta, haga esto
fuente
Para resolver la respuesta anterior ( https://stackoverflow.com/a/44860918/2011818 ), también puede enviar los objetos en línea "A" dentro del objeto Enlace.
fuente
Mecanografiado
Para el enfoque mencionado de esta manera en muchas respuestas,
Estaba recibiendo un error
Luego revisé la documentación oficial que me proporcionaron
state
para el mismo propósito.Entonces funcionó así,
Y en su próximo componente puede obtener este valor de la siguiente manera,
fuente
Ruta:
Y luego se puede acceder params en su componente PageCustomer como esto:
this.props.match.params.id
.Por ejemplo, una llamada a la API en el componente PageCustomer:
fuente