React16.x操作dom實(shí)現(xiàn)聊天記錄框滾動(dòng)

背景:
我用React做了一個(gè)聊天記錄的窗口,每當(dāng)來了新消息或者自己回復(fù)了消息之后,需要讓聊天記錄的那個(gè)框自己滾動(dòng)到最底部,顯示最新的消息。

思路:當(dāng)有新消息的時(shí)候,就將新消息push到數(shù)組中,這個(gè)數(shù)組是放在store中受到觀察的。那么在數(shù)組的內(nèi)容發(fā)生變化的時(shí)候,組件就會(huì)重新渲染,在生命周期的:componentDidUpdate中,然后在這個(gè)生命周期中,拿到聊天記錄框的dom,進(jìn)行scroll就OK了。

在舊版本的React中,采用的是

ref='name'
this.refs.name

這樣的形式,要知道在新版本中,this.refs.name這樣的形式已經(jīng)不推薦了,我百度搜了一下,都沒有看到有人寫一點(diǎn)。自己查了一下文檔,得到以下結(jié)論:
1.在dom元素上設(shè)置ref,這里的ref是一個(gè)函數(shù)了

<div className='chat-content' ref={(chatContainer) => this.chatContainer = chatContainer}>
....省略具體內(nèi)容
</div>

這樣設(shè)置后,在生命周期中,就可以通過this,charContainer來獲得dom元素了

  1. 生命周期中滾動(dòng)到最下端
componentDidUpdate() {
    this.chatContainer.scrollTop = this.chatContainer.scrollHeight
  }

就這么幾行代碼,就實(shí)現(xiàn)了自己的需求,最開始還糾結(jié)了很久。
記錄下來,作為參考。如能幫助到他人,樂意之至。

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 3. JSX JSX是對(duì)JavaScript語言的一個(gè)擴(kuò)展語法, 用于生產(chǎn)React“元素”,建議在描述UI的時(shí)候...
    pixels閱讀 2,983評(píng)論 0 24
  • 1、什么是react React.js 是一個(gè)幫助你構(gòu)建頁面 UI 的庫。React.js 將幫助我們將界面分成了...
    谷子多閱讀 2,654評(píng)論 1 13
  • It's a common pattern in React to wrap a component in an ...
    jplyue閱讀 3,411評(píng)論 0 2
  • 40、React 什么是React?React 是一個(gè)用于構(gòu)建用戶界面的框架(采用的是MVC模式):集中處理VIE...
    萌妹撒閱讀 1,196評(píng)論 0 1
  • 深入JSX date:20170412筆記原文其實(shí)JSX是React.createElement(componen...
    gaoer1938閱讀 8,190評(píng)論 2 35

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