真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

react.js中怎么實(shí)現(xiàn)tab吸頂效果

這篇文章給大家分享的是有關(guān)react.js中怎么實(shí)現(xiàn)tab吸頂效果的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,包括網(wǎng)站制作、成都網(wǎng)站制作、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營(yíng)銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營(yíng)銷等。創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)公司核心團(tuán)隊(duì)十載專注互聯(lián)網(wǎng)開(kāi)發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹(shù)立了良好口碑。

在react項(xiàng)目開(kāi)發(fā)中有一個(gè)需求是,頁(yè)面滾動(dòng)到tab所在位置時(shí),tab要固定在頂部。

實(shí)現(xiàn)的思路其實(shí)很簡(jiǎn)單,就是判斷當(dāng)滾動(dòng)距離scrollTop大于tab距離頁(yè)面頂部距離offsetTop時(shí),將tab的position變?yōu)閒ixed。

在react中,我在state中設(shè)置一個(gè)navTop屬性,切換這個(gè)屬性的值為true或者false,然后tab標(biāo)簽使用classnames()這個(gè)方法來(lái)利用navTop的值添加類名fixed。

一開(kāi)始我是這樣寫的:

import cs from 'classnames';

class FixedTab extends React.Component{
 constructor(props){
   super(props);
   
   this.state = {
    navTop: false
   }

   this.$tab = null;
   this.offsetTop = 0;
 }

 componentDidMount(){
  this.$tab = this.refs.tab;
  if(this.$tab){
   this.offsetTop = this.$tab.offsetTop;
   window.addEventListener('scroll',this.handleScroll);
  }
 }

 handleScroll(){
  let sTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

  if(sTop >= this.offsetTop){
    this.setState({
     navTop: true
    })
  }

  if(sTop < this.offsetTop){
    this.setState({
     navTop:false
    })
  }
 }

 render(){
  return(
    
  )  }  }

然后我發(fā)現(xiàn)這樣寫有問(wèn)題,當(dāng)我滾動(dòng)條滾動(dòng)距離達(dá)到條件時(shí),tab是出現(xiàn)了吸頂?shù)男Ч?,但一瞬間又恢復(fù)了,滾動(dòng)條也回彈了,一直無(wú)法繼續(xù)下拉。

我一開(kāi)始以為判斷邏輯有問(wèn)題,但一直找不到解決的辦法,后來(lái)我懷疑是state值改變的時(shí)間差導(dǎo)致的,好像陷入了一個(gè)死循環(huán),然后我就在判斷滾動(dòng)距離之前加了一個(gè)判斷navTop的狀態(tài)。

修改的主要代碼如下:

handleScroll(){
  let sTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

  if(!this.state.navTop && sTop >= this.offsetTop){
    this.setState({
     navTop: true
    })
  }

  if(sTop < this.offsetTop){
    this.setState({
     navTop:false
    })
  }
 }

這樣修改之后吸頂效果就正常了。

我認(rèn)為就是setState方法導(dǎo)致的問(wèn)題,setState本身是一個(gè)異步的方法,它還有一個(gè)參數(shù)是回調(diào)函數(shù)。

感謝各位的閱讀!關(guān)于“react.js中怎么實(shí)現(xiàn)tab吸頂效果”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


分享文章:react.js中怎么實(shí)現(xiàn)tab吸頂效果
分享網(wǎng)址:http://weahome.cn/article/jsdjgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部