expo-image
@amazon-devices/expo-imageは、React NativeおよびExpoを対象に、クロスプラットフォーム対応のパフォーマンスに優れた画像コンポーネントを提供します。このライブラリでは、画像のプレースホルダーの軽量表現であるBlurHash(英語のみ)とThumbHash(英語のみ)がサポートされます。また、ソースが変更されたときの画像間の遷移もサポートされます。@amazon-devices/expo-imageには、CSSのobject-fitプロパティとobject-positionプロパティが実装されています。
インストール
package.jsonファイルにJavaScriptライブラリの依存関係を追加します。dependencies: { ... "@amazon-devices/expo-image": "~2.0.1", }npm installコマンドを使用して、依存関係を再インストールします。
例
この例は、thumbhashプレースホルダーと複数のソースを含む画像を示しています。
import React from 'react';
import {StyleSheet, View} from 'react-native';
import {Image} from '@amazon-devices/expo-image';
export const App = () => {
return (
<View style={styles.container}>
<Image
source={[
'https://images.pexels.com/photos/842711/pexels-photo-842711.jpeg',
'https://climateforlife.pl/wp-content/uploads/2023/10/panda.png',
]}
style={styles.image}
placeholder="thumbhash:/1QcSHQRnh493V4dIh4eXh1h4kJUI"
/>
</View>
);
};
const styles = StyleSheet.create({
container: {
backgroundColor: 'white',
flex: 1,
},
image: {
width: 300,
aspectRatio: 1,
},
});
APIリファレンス
このライブラリとAPIリファレンスの詳細については、ドキュメントページを参照してください。 Expo公式ドキュメントのexpo-imageのページ(英語のみ)を参照してください。
コンポーネント
| コンポーネント | 説明 |
|---|---|
Image |
画像を読み込んでレンダリングするクロスプラットフォームのReactコンポーネント。 |
Imageのプロパティ
| プロパティ | 説明 | サポートあり |
|---|---|---|
accessibilityLabel |
ユーザーが画像を操作したときにスクリーンリーダーが読み上げるテキストです。ウェブではaltタグが設定され、ウェブクローラーとリンクトラバーサルに使用されます。 | ✅ はい |
accessible |
trueの場合、ビューがアクセシビリティ要素であることを示します。ビューがアクセシビリティ要素の場合、その子要素は、選択可能な1つのコンポーネントとしてグループ化されます。 |
✅ はい |
allowDownscaling |
ビューコンテナのサイズに合わせて画像を縮小するかどうかを示します。デフォルトはtrueです。falseに設定すると、特に大規模なアセットを扱う場合に、アプリのパフォーマンスに悪影響を及ぼす可能性があります。ただし、falseに設定することで、画像のサイズ変更がスムーズになり、エンドユーザーは常に利用可能な最高品質のアセットにアクセスできるようになります。 |
✅ はい |
alt |
ユーザーが画像を操作したときにスクリーンリーダーが読み上げるテキストです。ウェブではaltタグが設定され、ウェブクローラーとリンクトラバーサルに使用されます。これはaccessibilityLabelのエイリアスです。 |
✅ はい |
blurRadius |
ぼかしの半径をポイント単位で表します。たとえば、0は、ぼかし効果が適用されないことを意味します。この効果はプレースホルダーには適用されません。 |
✅ はい |
contentFit |
コンテナに合わせて画像のサイズをどのように変更するかを決定します。画像は、「縦横比を維持する」や「最大スペースまで拡大する」など、さまざまな方法でコンテナ全体に表示できます。CSSのobject-fitプロパティに似ています。 |
✅ はい |
contentPosition |
contentFitと組み合わせて使用することで、画像をコンテナ内のx/y座標でどのように配置するかを指定できます。CSSのobject-positionプロパティに相当します。 |
✅ はい |
defaultSource |
警告: 非推奨。画像ソースのデフォルト値。React NativeのImageのdefaultSourceに対する互換性を提供します。代わりにplaceholderプロパティを使用してください。 |
✅ はい |
fadeDuration |
警告: 非推奨。React NativeのImageのfadeDurationに対する互換性を提供します。代わりにtransitionを使用して時間を指定してください。 |
✅ はい |
focusable |
このビューを非タッチ入力デバイスでフォーカス可能にするかどうかを指定します。たとえば、ハードウェアキーボードによるフォーカスを受け取るかどうかを示します。 | ✅ はい |
loadingIndicatorSource |
警告: 非推奨。React NativeのImageのloadingIndicatorSourceに対する互換性を提供します。代わりにplaceholderプロパティを使用してください。 |
✅ はい |
onError |
画像の取得でエラーが発生したときに呼び出されます。 | ✅ はい |
onLoad |
画像の読み込みが正常に完了したときに呼び出されます。 | ✅ はい |
onLoadEnd |
画像の読み込みが成功または失敗したときに呼び出されます。 | ✅ はい |
onLoadStart |
画像の読み込みが開始されたときに呼び出されます。 | ✅ はい |
placeholder |
正しい画像の読み込み中にまだ画像が表示されていないときや、ソースが設定されていない場合に表示する画像。 | ✅ はい |
priority |
読み込みを完了する優先順位。複数の読み込みが一度にキューに追加された場合、優先順位の高い読み込みが最初に開始されます。優先順位はベストエフォートとして扱われ、読み込みが開始または終了する順序を保証するものではありません。 | ✅ はい |
recyclingKey |
最終的な画像の読み込みとレンダリングが行われる前に、画像ビューのコンテンツが空白またはプレースホルダーにリセットされます。FlashListなどのビューをリサイクルして、新しいソースが完全に読み込まれる前に以前のソースが表示されないようにするのに役立ちます。 |
✅ はい |
resizeMode |
警告: 非推奨。React NativeのImageのresizeModeに対する互換性を提供します。"repeat"オプションはサポートされていません。代わりに、より強力なcontentFitプロパティとcontentPositionプロパティを使用してください。 |
✅ はい |
source |
画像のソース。リモートURL、ローカルファイルリソース、require()関数の結果の数値のいずれかを指定できます。ソースの配列を指定すると、コンテナのサイズに最も適していて、かつ画面スケールに最も近いソースが選択されます。この場合は、width、height、scaleの各プロパティを指定する必要があります。 |
✅ はい |
tintColor |
テンプレート画像(たとえば、不透明度だけが重要となるビットマップ画像)の色付けに使用される色。この色はすべての不透明ピクセルに適用され、画像の形状に取り込まれます。この効果はプレースホルダーには適用されません。 | ✅ はい |
transition |
画像ソースを切り替えたときに、画像ビューのコンテンツをどのように遷移させるかを記述します。数値として指定した場合、「cross-dissolve」効果の時間をミリ秒単位で表します。 |
✅ はい |
onProgress |
動画の再生やファイルのアップロードに使用されます。React Nativeドキュメント:https://reactnative.dev/docs/image#onprogress | ❌いいえ |
メソッド
| メソッド | 説明 |
|---|---|
clearDiskCache |
ディスクキャッシュからすべての画像を非同期的に消去します。 |
clearMemoryCache |
メモリに格納されているすべての画像を非同期的に消去します。 |
prefetch |
指定されたURLの画像を事前に読み込み、後で画像ビューで使用できるようにします。事前に読み込まれた画像は常にディスクにキャッシュされるため、disk(デフォルト)またはmemory-diskキャッシュポリシーを使用する必要があります。 |
既知の問題と制限事項
- このライブラリでは、SVGおよびアニメーションのソースはサポートされません。
- Vegaでは、
onLoadEnd、onLoadStart、onLoadが呼び出されないことがあります。
サポートされているバージョン
| パッケージのバージョン | ベース | @amazon-devices/react-native-keplerバージョン |
|---|---|---|
| 2.0.x | 1.6.0 | 2.0.x |
関連トピック
Last updated: 2025年9月30日

