react之ref

464 阅读1分钟

ref属性,表示为对组件真正实例的引用,获取ref引用组件对应的dom节点

不管ref设置值是回调函数还是字符串,都可以通过ReactDOM.findDOMNode(ref)来获取组件挂载后真正的dom节点。

1.ref值是字符串

1.<input ref='inputElement'/>
2.this.refs.inputElement
 

2.

1.<input ref={this.inputElement}/>
2.private inputElement: React.RefObject<HTMLInputElement>;
3.this.inputElement = React.createRef();

 if (this.inputElement.current) {
    this.inputElement.current.focus();
}
 

3.ref值是回调函数

1.<input ref={node => this.inputElement = node}/>
2. private inputElement: any;
3.this.inputElement.style.width= '100';
 

this.refs 和 ReactDOM.findDOMNode的区别

ref添加到Component上获取的是Compoennt实例,添加到原生HTML上获取的是DOM;

ReactDOM.findDOMNode,当参数是DOM,返回值就是该DOM;当参数是Component获取的是该Component render方法中的DOM 二者主要区别在ref绑定在组件上的时候,this.refs获取到的是组件实例,ReactDOM.findDOMNode获取到的是dom节点。

新版本的React已经不推荐我们使用ref string转而使用ref callback