React獲取DOM的方法簡述
createRef
當 ref 屬性在組件時师崎,獲取組件實例葡兑;當ref屬性在dom時鉴裹,獲取dom實例
findDOMNode
獲取findDOMNode(this)參數(shù)組件(this)的DOM(所有DOM)
如果只是Fragment包裹冒晰,則只能獲取其第一個子組件的DOM
例如:
獲取的第一個子組件的DOM:<div>1</div>
<Fragment>
<div>1</div>
<div>2</div>
</Fragment>
獲取的第一個子組件的DOM:<div><div>1</div><div>2</div></div>
<Fragment>
<div>
<div>1</div>
<div>2</div>
</div>
</Fragment>
forwardRef
用法:
const Child=React.forwardRef((props,ref)=>(
<div>
<span ref={ref}>child</span>
</div>
))
通過上面包裹后惜颇,
class Parent extends Component{
//...
this.myRef=React.createRef();
<Child ref={this.myRef} />
}
雖然ref在組件上,但還是能獲取到Child的span.
另一種用法:獲取的是input
const Child= React.forwardRef((props,ref)=>{
class GrandChild extends React.Component{
render(){
return (
<input ref={ref}/>
)
}
}
return (
<div >
child
{props.children}
<GrandChild />
</div>
)
})