小编典典

现在不推荐使用ReactDOM.findDOMNode()的替代方法是什么?

reactjs

我有一个正在使用的旧代码findDOMNode()

这里是我的代码,其中someComponent1Expand已经导入。

在这里,我有些疑问,我编写的代码findDOMNode()可以正常工作,但是由于现在不推荐使用,所以我想删除它。我浏览了许多文档,发现使用门户或引用代替了此。我的理解是,如果我使用ref,那么变量get
bind到该变量也可以访问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}/>
    )
  }
}

阅读 2630

收藏
2020-07-22

共1个答案

小编典典

根据 此github问题
ReactDocs
ReactDOM.findDOMNode不建议弃用,但不鼓励使用它,仅应将其用作逃生舱口。为了替换它,您需要在DOM元素上指定ref,在您的情况下看起来像

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>
    }
}
2020-07-22