Réagir Routeur Passer Param de Composant
const rootEl = document.getElementById('root');
ReactDOM.render(
<BrowserRouter>
<Switch>
<Route exact path="/">
<MasterPage />
</Route>
<Route exact path="/details/:id" >
<DetailsPage />
</Route>
</Switch>
</BrowserRouter>,
rootEl
);
Je suis en train d'essayer d'accéder à la id dans le DetailsPage composant, mais il n'est pas accessible. J'ai essayé
<DetailsPage foo={this.props}/>
pour passer des paramètres à la DetailsPage, mais en vain.
export default class DetailsPage extends Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="page">
<Header />
<div id="mainContentContainer" >
</div>
</div>
);
}
}
Donc aucune idée de la façon de transmettre l'ID sur le DetailsPage ?
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez passer des accessoires à un composant à l'intérieur d'un itinéraire, le plus simple est d'utiliser le
render
, comme ceci:Vous pouvez accéder à la des accessoires à l'intérieur de la
DetailPage
à l'aide de:La
{...props}
est nécessaire pour passer l'origine de l'Itinéraire accessoires, sinon vous n'obtiendrezthis.props.globalStore
à l'intérieur de laDetailPage
.<Route exact path="/details/:id" ><DetailsPage /></Route>
n'était pas le même que<Route exact path="/details/:id" component={DetailsPage} />
. Votre code rendusDetailsPage
même si vous avez visité le '/'. Deuxièmement, quand vous avez écrit<DetailsPage foo={this.props}/>
,this
visée ànull
. C'est pourquoi il n'a pas de travail.Warning: [react-router] You cannot change <Router routes>; it will be ignored
J'ai utilisé pour accéder à l'ID dans mon composant:
Et dans le détail de la composante:
Cela va rendre toute pièce d'identité à l'intérieur d'un h2, l'espoir qui aide quelqu'un.
Utiliser la méthode de rendu:
Et vous devriez être en mesure d'accéder à l'id à l'aide de:
À l'intérieur de la DetailsPage composant
<Route path="/..." component={props => <DetailsPage id={props.match.params.id}/>}/>
Utiliser le composant:
Et vous devriez être en mesure d'accéder à la
id
à l'aide de:À l'intérieur de la
DetailsPage
composant<Route exact path="/details/:id" > <DetailsPage globalStore={globalStore} /> </Route>
En train de passer le globalStore ne fonctionne pas.En plus de Alexander Lunas réponse ...
Si vous souhaitez ajouter plus d'un argument suffit d'utiliser:
Une autre solution est d'utiliser un état et le cycle de vie des crochets dans le acheminé composant et une instruction de recherche dans le
to
propriété de la<Link />
composant. Les paramètres de recherche peut ensuite être consulté vianew URLSearchParams()
;Voici tapuscrit version. fonctionne sur
"react-router-dom": "^4.3.1"
et composant
où
ProblemRouteTokens
Depuis réagir-routeur v5.1 avec des crochets:
Voir https://reacttraining.com/blog/react-router-v5-1/
si vous utilisez la classe de composant, vous êtes plus susceptibles d'utiliser GSerjo suggestion. Passer dans les params par
<Route>
accessoires pour votre composant cible: