6-refs 拿到真實(shí)的 dom 元素

以前的方式:

在元素上給一個(gè)ref的屬性,值是字符串,如 :ref="d1"
訪問(wèn)這個(gè)真是的dom元素 : this.refs.d1

現(xiàn)在推薦的方式,回調(diào)

在元素上給一個(gè)ref屬性,值是回調(diào)函數(shù),會(huì)把當(dāng)前dom元素當(dāng)參數(shù)傳到回調(diào)函數(shù)里面。
過(guò)程解析:這個(gè)節(jié)點(diǎn)被渲染的時(shí)候,這個(gè)回調(diào)函數(shù)會(huì)被調(diào)用,會(huì)傳遞一個(gè)參數(shù):這個(gè)真實(shí)的DOM元素,你就可以做任何事情。

ref={elt=>{this.d1=elt}} //將這個(gè)DOM掛載到組件實(shí)例上
this.d1 //訪問(wèn)這個(gè)真實(shí)的DOM元素

在父組件上拿到子組件ref

class Sub extends Component{
    constructor(props){
        super(props)
    }
    render(){
        let {d1} = this.props
        return (
            <div>
                <div ref={d1}>子組件的div</div>
            </div>
        )
    }
}

export default class Refs extends Component{
    constructor(props){
        super(props)
    }       
    getChildDom=()=>{
        console.log(this.d1)
    }
    render(){
        return (
            <div>
                <Sub d1={elt=>{this.d1=elt}}></Sub>
                <div
                
                >會(huì)被拿到</div>
                <button onClick={this.getChildDom}>getChildDom</button>
            </div>
        )
    }
}

記住一個(gè)原則:能不用 ref 就不用。特別是要避免用 ref 來(lái)做 React.js 本來(lái)就可以幫助你做到的頁(yè)面自動(dòng)更新的操作和事件監(jiān)聽(tīng)。多余的 DOM 操作其實(shí)是代碼里面的“噪音”,不利于我們理解和維護(hù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • refs提供了可以在render方法中訪問(wèn)dom節(jié)點(diǎn)和創(chuàng)建的react元素的方法。 為了良好的閱讀體驗(yàn),請(qǐng)查看gi...
    mytac閱讀 512評(píng)論 0 1
  • 深入JSX date:20170412筆記原文其實(shí)JSX是React.createElement(componen...
    gaoer1938閱讀 8,183評(píng)論 2 35
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,177評(píng)論 0 29
  • 今天突然意識(shí)到 原來(lái)每天都能完成一些事情 是件多么幸福的事 該買(mǎi)的書(shū)已經(jīng)到了,該考的試已經(jīng)考了,改找的人已經(jīng)找了,...
    王牌飛行員閱讀 249評(píng)論 1 1
  • 2018年3月19日,周一,我和胖哥的大喜之日。 婚期漸進(jìn),時(shí)不時(shí)有人來(lái)問(wèn)我這個(gè)新娘子有沒(méi)有很緊張激動(dòng),最后詢(xún)問(wèn)的...
    我愛(ài)jiang牛肉閱讀 390評(píng)論 1 2

友情鏈接更多精彩內(nèi)容