iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
Modern Web

我不用Expo啦,React Native!系列 第 11

[Day11] 圖片載入緩慢

  • 分享至 

  • xImage
  •  

今日關鍵字:Fast


由於首頁有一堆圖片要開(我的圖片是用連結外連的)
所以當首頁要全部載入時,只有一個字...

雖然RN本身也是像瀏覽器一樣有cache機制
不過使用起來真的是卡啊/images/emoticon/emoticon10.gif
於是用cache當關鍵字上github找找看套件
https://ithelp.ithome.com.tw/upload/images/20200911/20121828Pbmr9zzD9U.png
嗯...也不是說不好啦
但感覺要用套件就是星星數至少要有K吧/images/emoticon/emoticon14.gif
再找找看好了(喂

https://ithelp.ithome.com.tw/upload/images/20200911/20121828FVikPXRyJ3.png
...對
我的確是希望載入快一點啦
但這樣不會太白話嗎?
(論關鍵字的重要性)

react-native-fast-image
來看一下這個套件幫忙解決了什麼問題

  • Flickering.
  • Cache misses.
  • Low performance loading from cache.
  • Low performance in general.
    看起來很不錯,馬上來試用看看
yarn add react-native-fast-image

cd ios && pod install && cd ..

使用方法很簡單
把套件裡的主要元件FastImage直接取代RN的Image就可以了

import FastImage from 'react-native-fast-image'
...
<FastImage
  style={styles.itemImg}
  source={{
    uri: item.imgLink
  }}
/>

跟原來的有87%像

值得要注意的是官方的範例

const YourImage = () => (
    <FastImage
        style={{ width: 200, height: 200 }}
        source={{
            uri: 'https://unsplash.it/400/400?image=1',
            headers: { Authorization: 'someAuthToken' },
            priority: FastImage.priority.normal,
        }}
        resizeMode={FastImage.resizeMode.contain}
    />
)

其中的

resizeMode={FastImage.resizeMode.contain}

會讓我原本滿版的圖
https://ithelp.ithome.com.tw/upload/images/20200911/20121828bgFE9HVBrk.png
變成有兩道白邊
不過這個其實語意上跟css的background-size是一樣的
contain:當圖片大於區塊時會維持原比例把圖片縮小擠進來

解決的方法就是...刪掉這個props
由於預設是cover
所以刪除之後又回復成滿版了


明天預計來做細節頁面的點擊愛心及鈴鐺效果

參考:react-native-fast-image


上一篇
[Day10] 建立與細節頁面之連結
下一篇
[Day12] 幫喜歡的項目按下愛心
系列文
我不用Expo啦,React Native!33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言