【記錄】前端開發過程中遇到的坑,以及各種第三方組件的使用

有些坑點記錄在我的新博客上:http://www.woke20.com

一.很多時候,一些第三方組件出現的問題,都是因爲在初始化時候沒有第一時間拿到數據(異步請求數據),所有建議在組件之前進行判斷是否有數據再進行渲染。類似如下寫法

1.carousel組件在請求異步數據後,不能自動輪播。

    解決技巧:

       1.將carousel的autoplay設置爲一個state,默認設置state爲false,當請求到數據後,將state設置爲true就可以解決。

       2.在組件之前判斷是否有數據,有數據再進行渲染。

 

2.carousel組件在請求異步數據後,圖片被隱藏一部分。(因爲組件沒有在初始化時候就拿到數據,所以設置了默認高度爲100px

    解決技巧:

       1.可以給數據設置一組默認值

       2.在組件之前判斷是否有數據,有數據再進行渲染。(如果用這種方法就不要設置默認值了,影響數據判斷)

3.最近在使用dva時,創建了PureComponent,但是依然發現只要通過dispatch觸發了action,不論是state的值是不是改變了,render函數都會執行(頁面會重新渲染)。比如下面這個函數,每次都是將flag賦值爲true,但是連接該model的頁面依然重新渲染了。

 原因:

   

    

不論state的值是否改變,每一次通過reducer返回的state都是全新的對象,同時PureComponent進行的只是淺比較,對於引用類型只是比較了其地址。所以會觸發render()

4.z-index失效的幾種情況:

  1⃣️.元素未設置定位。z-index是針對設置了定位的元素的(position: static除外的定位)。

  2⃣️.父級元素層級低。

5.position: fixed失效

  原因:父級元素中使用了transform屬性

解決:將需要position:fixed的元素和使用position的元素放在不同的容器中

6.video在chrome下無法自動播放

  原因:chrome禁用音頻自動播放,所以視頻必須靜音才能自動播放。可以添加muted屬性來靜音

二.第三方組件使用

1.aplayer

     在react中使用:

 onInit()函數很重要,在這裏生成aplayer對象,通過改對象可以添加事件。如果需要退出時候關閉播放器,就可以在componentWillMount()生命週期中,調用aplayer對象的destroy()方法,銷燬播放器。

注意:如果一個頁面有多個播放器,可以在onInit函數中將生成的aplayer對象push進一個數組,通過數組獲取每個播放器。

2. 高德地圖和百度地圖定位

  百度地圖: 在使用百度地圖瀏覽器定位時,發現只能獲取到市級。原因:(如果瀏覽器內核是chrome  或者 ios10 ,需要開啓https服務,才能使用瀏覽器定位,不然會採用IP定位,而IP定位只能獲取到市級)。解決方法,升級https。

  高德地圖: 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章