パフォーマンスの反応ネイティブ画像コンポーネント。

ファストイメージの例アプリ。
React NativeのImageコンポーネントは、ほとんどの場合、ブラウザのような画像キャッシュを処理します。サーバーが画像の適切なキャッシュコントロールヘッダーを返している場合、通常、ブラウザにあるキャッシュ動作のような組み込みのようなものを取得します。非常に多くの人でさえ、
FastImageは、これらの問題を解決するImage置換です。 FastImageは、SDWEBIMAGE(IOS)とGlide(Android)の周りのラッパーです。
注: react-native-fast-imageの最新バージョンを使用するには、React Native 0.60.0以降を使用する必要があります。
yarn add react-native-fast-image
cd ios && pod install import FastImage from 'react-native-fast-image'
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 }
/>
) Proguardを使用する場合は、これらの行をandroid/app/proguard-rules.proに追加する必要があります。
-keep public class com.dylanvann.fastimage.* {*;}
-keep public class com.dylanvann.fastimage.** {*;}
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
source?: objectロードするリモート画像のソース。
source.uri?: string画像をロードするリモートURL。例'https://facebook.github.io/react/img/logo_og.png' 。
source.headers?: object画像をロードするヘッダー。 EG { Authorization: 'someAuthToken' } 。
source.priority?: enumFastImage.priority.low優先度が低い。FastImage.priority.normal (デフォルト) - 通常の優先度。FastImage.priority.high優先度が高い。source.cache?: enumFastImage.cacheControl.immutable (デフォルト) - URLが変更された場合のみ更新します。FastImage.cacheControl.webヘッダーを使用して、通常のキャッシング手順に従います。FastImage.cacheControl.cacheOnlyキャッシュからの画像のみを表示し、ネットワークリクエストを行わないでください。defaultSource?: numberrequire(...)がロードされた資産。Image実装と同様に、Android defaultSourceはデバッグモードでは機能しないことに注意してください。これは、資産が開発サーバーから送信されるという事実によるものですが、RNの機能はresからロードする方法のみを知っています。resizeMode?: enumFastImage.resizeMode.contain画像を均一にスケーリング(画像のアスペクト比を維持します)。FastImage.resizeMode.cover (デフォルト) - 画像の両方の寸法(幅と高さ)がビューの対応するディメンション(マイナスパディング)以上になるように、画像を均一にスケーリングします(画像のアスペクト比を維持します)。FastImage.resizeMode.stretchスケール幅と高さを個別に、これによりSRCのアスペクト比が変わる可能性があります。FastImage.resizeMode.center画像をスケーリングせず、中央に保ちます。onLoadStart?: () => void画像の読み込みが開始されたときに呼び出されます。
onProgress?: (event) => void画像が読み込まれているときに呼び出されます。
eg onProgress={e => console.log(e.nativeEvent.loaded / e.nativeEvent.total)}
onLoad?: (event) => void成功した画像フェッチで呼び出されました。ロードされた画像の幅と高さで呼び出されました。
Eg onLoad={e => console.log(e.nativeEvent.width, e.nativeEvent.height)}
onError?: () => voidエラーを取得する画像で呼び出されました。
onLoadEnd?: () => void画像が成功したかエラーであろうと、画像がロードが終了したときに呼び出されます。
style反応ネイティブスタイル。 borderRadiusの使用をサポートします。
fallback: boolean TrueがImageを使用することにフォールバックする場合。この場合、画像はまだスタイリングされ、 FastImageと同じ方法でレイアウトされます。
tintColor?: number | string供給される場合は、すべての非透明ピクセルの色を与えられた色に変更します。
FastImage.preload: (source[]) => void後で表示する画像をプリロードします。例えば
FastImage . preload ( [
{
uri : 'https://facebook.github.io/react/img/logo_og.png' ,
headers : { Authorization : 'someAuthToken' } ,
} ,
{
uri : 'https://facebook.github.io/react/img/logo_og.png' ,
headers : { Authorization : 'someAuthToken' } ,
} ,
] )FastImage.clearMemoryCache: () => Promise<void>メモリキャッシュからすべての画像をクリアします。
FastImage.clearDiskCache: () => Promise<void>ディスクキャッシュからすべての画像をクリアします。
このライブラリの使用に問題がある場合は、トラブルシューティングの手順を試して、修正するかどうかを確認してください。
これらの手順に従って、サンプルアプリを実行してください。
このプロジェクトは、React Nativeの最新バージョンをサポートすることのみを目的としています。
これにより、プロジェクトの開発とテストが簡素化されます。
古いバージョンに新機能またはバグ修正が必要な場合は、このプロジェクトをフォークできます。
このモジュールのアイデアは、VovkasmのReact-Native-Web-Imageパッケージから来ました。また、GlideとSdwebimageも使用していますが、必要な機能(優先度、ヘッダー)がありませんでした。
概念化を支援してくれた@mobinniに感謝します
MIT