En fait, React.cloneElement
n'est pas strictement lié aux this.props.children
.
C'est utile lorsque vous avez besoin de cloner réagir éléments(PropTypes.element
) pour ajouter/remplacer des accessoires, w/o vouloir le parent d'avoir des connaissances sur ces composants internes(e.g, fixation des gestionnaires d'événements ou d'affecter key
/ref
d'attributs).
Aussi réagir éléments sont immuables.
De réagir.cloneElement( élément, [accessoires], [...les] ) est presque équivalent à:
<element.type {...element.props} {...props}>{children}</element.type>
Cependant, les enfants prop à réagir, est spécialement utilisé pour le confinement(aka composition), l'appariement avec React.Children
de l'API et de l' React.cloneElement
, composant qui utilise des accessoires.les enfants peuvent manipuler plus logique(e.g, les transitions de l'état, des événements, des DOM, des mesures, etc) à l'interne, tout en offrant le rendu de la partie à l'endroit où il est utilisé, de Réagir Routeur <switch/>
ou partie de composé <select/>
sont d'excellents exemples.
Une dernière chose qui vaut la peine de mentionner, c'est que réagir éléments ne sont pas limités à des accessoires.les enfants.
function SplitPane(props) {
return (
<div className="SplitPane">
<div className="SplitPane-left">
{props.left}
</div>
<div className="SplitPane-right">
{props.right}
</div>
</div>
);
}
function App() {
return (
<SplitPane
left={
<Contacts />
}
right={
<Chat />
} />
);
}
Ils peuvent être tout ce que les accessoires de sens, la clé a été de définir un bon contrat pour le composant, de sorte que les consommateurs peuvent être découplées de la sous détails de mise en œuvre, indépendamment du fait que c'est en utilisant React.Children
, React.cloneElement
, ou même React.createContext
.