以前理所當然的認為,只要ref作為props傳進去,就可以直接給某個子組件用了,但是實際上不是這樣的
const Test = ({ref}) => { return <div ref={ref}> <p>hahahha</p> </div> } class TestWarper extends React.Component { ref = React.createRef(); render() { return <Test ref={this.ref} /> } } // 上面這種情況下,this.ref永遠是{current: null},在Test子組件也發現,傳進來的ref是undefined
面對這種情況,React有個方法,可以支持Ref的傳遞:forwardRef
import React, {forwardRef} from 'react'; // 包一層forwardRef const Test = forwardRef((props, ref:any) => { return <div ref={ref}> <p>hahahha</p> </div> }) class TestWarper extends React.Component { ref = React.createRef(); render() { return <Test ref={this.ref} /> } } // 這種情況下,this.ref就會是{current: div}了