web-dev-qa-db-fra.com

quelle est l'alternative pour ReactDOM.findDOMNode () car il est obsolète maintenant?

J'ai un ancien code qui utilise findDOMNode ().

voici mon code, où someComponent1 et Expand sont déjà importés

Ici, je doute que le code que j'ai écrit avec findDOMNode () fonctionne parfaitement, mais comme il est obsolète maintenant, je veux le supprimer. J'ai parcouru de nombreux documents et trouvé à utiliser des portails ou des références à la place de cela. Je comprends que si j'utilise ref, la variable get bind a également un accès à l'élément DOM, mais je suppose que je me trompe car cela fonctionne de cette façon. Quelqu'un peut-il corriger ma compréhension à ce sujet

class classA extends Component {

  componentDidMount() {
    new Expand(ReactDOM.findDOMNode(this.expand))
    // new Expand(this.expand)    
  }

  render(){

    return(
      <someComponent1 className={style.container} ref={e => this.expand= e}/>
    )
  }
}
7
Bishal Jain

Selon ce problème github et ReactDocs, ReactDOM.findDOMNode n'est pas déconseillé mais son utilisation est déconseillée et ne doit être utilisée que comme une trappe d'échappement. Pour le remplacer, vous devez spécifier la référence sur l'élément DOM qui dans votre cas ressemblerait à

class classA extends Component {

  componentDidMount() {
     new Expand(this.expand)    
  }

  render(){

    return(
      <SomeComponent1 className={style.container} innerRef={e => this.expand= e}/>
    )
  }
}

class SomeComponent1 extends React.Component {
    render() {
       return <div ref={this.props.innerRef}>Hello</div>
    }
}
2
Shubham Khatri