reactjs / reactjs/react.dev

Adding ref with React.cloneElement() fails on class component with functional component error

Ouverte
#3,911 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
JavaScript
Étoiles
11.8k
Forks
7.9k
Merge moyen
1 j 11 h
PR mergées (30 j)
11

Description

In a class component with all class component children...

constructor(props) {
  super(props);

  this.myref = React.createRef();
}

render() {

  return (
    {React.cloneElement(this.props.children[0], {ref: myref})}
  );
}

...fails with Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?

I get that React.cloneElement() is probably returning a functional wrapper that's confusing React, but given the power of this.props.children, what is the proper way to dynamically add refs? All of the actual children are class components if that matters.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Le rapport mentionne React.cloneElement(), React.createRef(), les composants de classe et les composants fonctionnels, mais aucun fichier du dépôt ni point d’entrée de test. Commencez par reproduire l’avertissement avec la structure de composants indiquée et déterminez si le comportement attendu nécessite une correction de React ou une clarification de la documentation ; c’est terminé lorsqu’un résultat convenu et reproductible ainsi qu’une résolution documentée ou testée sont obtenus.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, react
Domaine
frontend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.