我有一个正在使用的旧代码findDOMNode()。
findDOMNode()
这里是我的代码,其中someComponent1和Expand已经导入。
someComponent1
Expand
在这里,我有些疑问,我编写的代码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}/> ) } }
根据 此github问题 和 ReactDocs ,ReactDOM.findDOMNode不建议弃用,但不鼓励使用它,仅应将其用作逃生舱口。为了替换它,您需要在DOM元素上指定ref,在您的情况下看起来像
ReactDOM.findDOMNode
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> } }