Какова альтернатива для ReactDOM.findDOMNode (), поскольку это устарело сейчас? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть старый код, который использует findDOMNode ().

вот мой код, где someComponent1 и Expand уже импортированы

Здесь у меня есть некоторые сомнения в коде, который я написал сfindDOMNode () работает отлично, но теперь он устарел, и я хочу его удалить.Я просмотрел много документов и обнаружил, что вместо этого используют порталы или ссылки.У меня есть понимание, что если я использую ref, то переменная get bind to также имеет доступ к элементу DOM, но я предполагаю, что я ошибаюсь, поскольку она работает таким образом.Может кто-нибудь, пожалуйста, исправьте мое понимание по этому вопросу

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}/>
    )
  }
}

1 Ответ

0 голосов
/ 30 мая 2018

Согласно эта проблема github и ReactDocs , ReactDOM.findDOMNode не считается устаревшей, но ее использование не рекомендуется и должно быть толькоиспользуется в качестве аварийного люка.Чтобы заменить его, вам нужно указать ссылку на элемент DOM, который в вашем случае будет выглядеть как

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>
    }
}
...