React移動(dòng)端開發(fā)各種大小坑的記錄

1.一個(gè)簡單的需求爸业,入下圖抱冷,當(dāng)屏幕向下滾動(dòng)到tab欄(下圖中第二個(gè),正常文檔流存在于頁面中)時(shí)让禀,隱藏的fixed的同樣的tab欄會(huì)顯現(xiàn)(下圖中第一個(gè)),我的思路和很多人一樣判斷tab欄的offsetTop_tab和滑動(dòng)的scrollTop陨界,當(dāng)scrollTop >= offsetTop_tab時(shí)就把隱藏的tab欄顯示出來巡揍。但是寫代碼時(shí)由于scroll事件觸發(fā)的頻率較多,故我在事件處理程序外就用一個(gè)變量接收了第二個(gè)offsetTop_tab菌瘪,以免每次取時(shí)都觸發(fā)重繪重排腮敌。我在測試環(huán)境下測試沒有問題,但是一丟到正式環(huán)境就發(fā)現(xiàn)出問題了俏扩,offsetTop_tab這個(gè)值不對(duì)(偏忻庸ぁ),導(dǎo)致隱藏的會(huì)提前顯示出來录淡。

產(chǎn)生原因:經(jīng)過分析在react的componentDidMount生命周期函數(shù)中捌木,頁面的結(jié)構(gòu)并未完全的解析渲染(你可以理解為數(shù)據(jù)沒返回來的空殼這個(gè)DOM結(jié)構(gòu)以及樣式并未成型),所以我一進(jìn)這個(gè)生命周期就抓取offsetTop_tab的值并不準(zhǔn)確嫉戚。

ps:之前用vue開發(fā)也遇到過類似的問題刨裆,在父組件中通過this.$children[index]來抓取父組件中的各個(gè)子組件,通常情況下我們可能認(rèn)為父組件中頁面結(jié)構(gòu)從上到下的子組件的index依次是0,1,2......彬檀,但是實(shí)際情況并不一定能夠就是這樣的帆啃,index的順序是根據(jù)這個(gè)子組件渲染的先后順序決定的,比如father組件里面有三個(gè)子組件結(jié)構(gòu)上從上到下依次是ChildOne窍帝、ChildTwo努潘、ChildThree,若實(shí)際渲染的先后順序ChildThree--->ChildOne--->ChildTwo,那么他們的index分別為ChildOne:1坤学,ChildTwo:2疯坤,ChildThree:0

bug圖

解決方式:將取tab欄offsetTop的代碼移動(dòng)到設(shè)定data讓數(shù)據(jù)渲染到頁面上后(setDate的回調(diào)里面),此時(shí)的DOM結(jié)構(gòu)已穩(wěn)定拥峦。

2. 在某些機(jī)型上尺寸會(huì)和你計(jì)算的尺寸相差1~2個(gè)像素贴膘,所以當(dāng)你發(fā)現(xiàn)某個(gè)機(jī)型上你計(jì)算的尺寸要觸發(fā)的事件沒有觸發(fā),那么嘗試著試試添加或減少2個(gè)像素debug試試看略号。

3.在iOS webview上刑峡,當(dāng)你引入的某個(gè)腳本頁面沒找到的話,那么這個(gè)頁面可能會(huì)直接不會(huì)顯示玄柠,同樣的safari瀏覽器也是一樣突梦。若你取的某個(gè)變量沒有值(通常我們會(huì)認(rèn)為是undefined,但是在蘋果的瀏覽器上會(huì)報(bào)錯(cuò))也會(huì)報(bào)錯(cuò)羽利。

4.在使用vue的時(shí)候宫患,Mounted生命周期中只是渲染了頁面結(jié)構(gòu),數(shù)據(jù)并未填充進(jìn)去(除非你設(shè)置了默認(rèn)數(shù)據(jù))这弧,此時(shí)你取某個(gè)div的高或者scrolltop等并非是你想像的數(shù)據(jù)娃闲,可能是0虚汛。例如我在localstorage中存儲(chǔ)了用戶返回操作需要返回到之前瀏覽這個(gè)頁面的高度,可能一開始你在moubted里面直接設(shè)置scrollTop并不合適(不起作用),此時(shí)你可以嘗試著加個(gè)定時(shí)器來延遲執(zhí)行皇帮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卷哩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子属拾,更是在濱河造成了極大的恐慌将谊,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渐白,死亡現(xiàn)場離奇詭異尊浓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)纯衍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門栋齿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人托酸,你說我怎么就攤上這事褒颈。” “怎么了励堡?”我有些...
    開封第一講書人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵谷丸,是天一觀的道長。 經(jīng)常有香客問我应结,道長刨疼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任鹅龄,我火速辦了婚禮揩慕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扮休。我一直安慰自己迎卤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開白布玷坠。 她就那樣靜靜地躺著蜗搔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪八堡。 梳的紋絲不亂的頭發(fā)上樟凄,一...
    開封第一講書人閱讀 49,729評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音兄渺,去河邊找鬼缝龄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叔壤。 我是一名探鬼主播瞎饲,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼百新!你這毒婦竟也來了企软?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤饭望,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后形庭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铅辞,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年萨醒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斟珊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡富纸,死狀恐怖囤踩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晓褪,我是刑警寧澤堵漱,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站涣仿,受9級(jí)特大地震影響勤庐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜好港,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一愉镰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钧汹,春花似錦丈探、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辨宠,卻和暖如春遗锣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嗤形。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來泰國打工精偿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓笔咽,卻偏偏與公主長得像搔预,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叶组,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容