Maison >interface Web >js tutoriel >Comment puis-je transmettre des accessoires aux composants du gestionnaire dans React Router ?

Comment puis-je transmettre des accessoires aux composants du gestionnaire dans React Router ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-23 18:44:31565parcourir

How Can I Pass Props to Handler Components in React Router?

Passer des accessoires aux composants du gestionnaire dans React Router

Dans React Router, passer des accessoires aux composants du gestionnaire est une exigence courante. Considérez la structure suivante :

var Dashboard = require('./Dashboard');
var Comments = require('./Comments');

var Index = React.createClass({
  render: function () {
    return (
        <div>
            <header>Some header</header>
            <RouteHandler />
        </div>
    );
  }
});

var routes = (
  <Route path="/" handler={Index}>
    <Route path="comments" handler={Comments}/>
    <DefaultRoute handler={Dashboard}/>
  </Route>
);

ReactRouter.run(routes, function (Handler) {
  React.render(<Handler/>, document.body);
});

Transmission directe des accessoires

Traditionnellement, vous transmettriez les accessoires directement au composant Commentaires comme ceci :

<Comments myprop="value" />

Passer des accessoires via React Router

Cependant, dans React Router, les accessoires doivent être transmis via le composant prop de la Route. Il existe deux façons de procéder :

1. Utilisation d'un composant Wrapper

Créez un composant wrapper qui s'enroule autour du composant gestionnaire :

var RoutedComments = React.createClass({
  render: function () {
    return <Comments {...this.props} myprop="value" />;
  }
});

Ensuite, utilisez le composant RoutedComments au lieu du composant Comments dans la route :

<Route path="comments" handler={RoutedComments}/>

2. Utilisation de composants de classe avec des propriétés de route

Définissez un composant de classe qui s'étend de React.Component et utilisez le prop du composant :

class Index extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    return (
      <h1>
        Index - {this.props.route.foo}
      </h1>
    );
  }
}

var routes = (
  <Route path="/" foo="bar" component={Index}/>
);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn