react-native-pager-view
@amazon-devices/react-native-pager-viewは、サードパーティのPagerViewライブラリであるCallstackのPagerView(英語のみ)を、安定版のAPIを使用してKeplerでサポートします。
PagerViewコンポーネントでは、動的なビューを使用して簡単にページ分割を処理できます。これにより、ユーザーがデータのページを左右にスワイプできるようになります。
インストール
-
package.jsonファイルにJavaScriptライブラリの依存関係を追加します。該当するReact Nativeバージョンのタブを選択してください。
"dependencies": { ... "@amazon-devices/react-native-pager-view": "~2.0.3" }
"dependencies": { ... "@amazon-devices/react-native-pager-view": "~2.0.3" } -
npm installコマンドを使用して、依存関係を再インストールします。
例
import React, { useMemo } from 'react';
import { StyleSheet, View, Animated, Text } from 'react-native';
import PagerView from '@amazon-devices/react-native-pager-view';
const AnimatedPagerView = Animated.createAnimatedComponent(PagerView);
export function App() {
const pages = useMemo(
() => [
{ key: 'page1', style: { backgroundColor: 'powderblue' } },
{ key: 'page2', style: { backgroundColor: 'skyblue' } },
{ key: 'page3', style: { backgroundColor: 'steelblue' } },
],
[]
);
return (
<View style={styles.container}>
<AnimatedPagerView
style={styles.PagerView}
initialPage={0}
pageMargin={10}
>
{useMemo(
() =>
pages.map((page, index) => (
<View
testID="pager-view-content"
key={page.key}
style={page.style}
collapsable={false}
>
<Text>{`ページ番号${index}`}</Text>
</View>
)),
[pages]
)}
</AnimatedPagerView>
</View >
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'white',
},
PagerView: {
flex: 1,
},
});
VegaでサポートされるAPI
コンポーネントAPI
| プロパティ | 説明 | デフォルト |
|---|---|---|
initialPage |
コンポーネントの初回マウント時に表示されるページを設定します。 | 0 |
onPageScroll |
ユーザーがページ間をスクロールしたときにトリガーされるコールバックです。 | - |
onPageScrollStateChanged |
スクロール状態(アイドル/ドラッグ中/停止中)が変更されたときにトリガーされるコールバックです。 | - |
onPageSelected |
新しいページが選択されたときにトリガーされるコールバックです。 | - |
pageMargin |
ページの余白を設定するために使用されます。 | - |
keyboardDismissMode |
ドラッグに応答してキーボードを閉じるかどうかを決定します。フルスクリーンキーボードを搭載したデバイスには適用されません。 | none |
orientation |
スクロール方向(horizontalまたはvertical)を設定します。 |
horizontal |
overScrollMode |
オーバースクロールアニメーションを制御します。指定した場合、overdragよりも優先されます。autoを指定すると、複数のページがある場合にアニメーションを有効にします。alwaysを指定すると無条件で有効にし、neverを指定すると無条件で無効にします。D-padによる操作には影響はありません。 |
auto |
offscreenPageLimit |
現在のページの前後にバッファーページとしてマウントしておくページ数です。 | 3 |
overdrag |
境界を越えてスクロールしたときのアニメーションを有効にします。overScrollModeが指定されていない場合に適用されます。D-padによる操作には影響はありません。 |
- |
layoutDirection |
テキストとレイアウトの方向(LTR/RTL)を制御します。ネイティブコンポーネントではこのプロパティはサポートされません。代わりに、このモードは完全にネイティブ実装で処理されます。 | - |
メソッド
| メソッド | 説明 |
|---|---|
setPage(index: number) |
指定したページまでアニメーション付きでスクロールします。 |
setPageWithoutAnimation(index: number) |
指定したページまでアニメーションなしでスクロールします。 |
Vegaでの例外
- Vegaプラットフォームでは、
scrollEnabledはサポートされません。 - Vegaプラットフォームでは、
setScrollEnabled(scrollEnabled: boolean)はサポートされません。 overDragは、overScrollModeを指定しない場合にサポートされます。layoutDirectionはコンポーネントではサポートされず、Vegaのネイティブ実装で処理されます。
入れ子になったPagerViewでのD-padナビゲーション
入れ子になったPagerView内の要素にフォーカスがあり、そこからD-padを使用して移動する場合、ページャーのスクロール軸に対して垂直な方向(たとえば、横方向のPagerViewでは上または下)を押すと、現在の要素の外側にある最も近い要素ではなく、外側のPagerViewの隣接ページにフォーカスがジャンプすることがあります。
この動作は特にPagerViewが入れ子になった構成で発生し、PagerViewを単一レベルで使用する場合には影響はありません。
サポートされているバージョン
| NPMパッケージのバージョン | Vega SDKバージョン | Vega OSバージョン | React Nativeバージョン |
|---|---|---|---|
| ~2.0.3 | 0.24 | OS 1.2(2101020054720) |
0.72、0.83 |
Last updated: 2026年7月10日

