すべてのコンポーネント
MotionSheet
段階付きのボトムシート、トップシート、サイドドロワー。フリックやスクロールへの引き継ぎにも対応。
WebReact Nativeオーバーレイ
試してみる
いちばん短い使い方
Filters.jsx<MotionSheet open={open} onOpenChange={setOpen} detents={[0.45, 0.92]}>
<FilterList />
</MotionSheet>;
代わりに処理してくれること
- ドラッグに追従し、いちばん大きな段階を越えると抵抗し、離したときの速度で落ち着きます。フリックすると 1 段階移動するか、閉じます。
- タッチのドラッグはスクロールできる中身に引き継がれます。下に引くと、シートが動く前に中身がいちばん上までスクロールして戻ります。
- 段階は画面に対する割合、ピクセル、または中身本来のサイズを表す
'content' で指定します。 - モーダルのシートはフォーカスを内側に閉じ込め、ページを操作不可にし、Escape か背景で閉じます。
こんなときに
- フィルターパネル。
- 共有メニュー。
side="start" を使ったナビゲーションドロワー。
props
| Prop | 型 | デフォルト | 説明 |
|---|
open | boolean | false | シートを表示するかどうか。 |
|---|
onOpenChange | (open) => void | | シートがドラッグ、タップ、Escape で閉じられたときに false を受け取って実行されます。 |
|---|
detents | (number | 'content')[] | ['content'] | 止まる位置のサイズ: 画面に対する割合、ピクセル、または 'content'。 |
|---|
detent | number | | 制御する段階のインデックス。 |
|---|
defaultDetent | number | 0 | detent を指定せずに開くときに使う段階のインデックス。 |
|---|
onDetentChange | (index) => void | | シートが落ち着いた段階のインデックスを受け取って実行されます。 |
|---|
side | 'bottom' | 'top' | 'start' | 'end' | 'bottom' | シートが出てくる辺。 |
|---|
modal | boolean | true | 背景を追加し、フォーカスを内側に閉じ込め、ページを操作不可にします。 |
|---|
dismissible | boolean | true | いちばん小さな段階を越えるドラッグ、背景、Escape で閉じられます。 |
|---|
backdropClassName | string | | 背景のクラス。インラインスタイルは backdropStyle で指定します。 |
|---|
transition | Transition | spring | タイミングカーブ { duration, easing } かスプリング { tempo: 'spring', spring }。スプリングは中断されても勢いを保ちます。 |
|---|
ほかの props は描画される要素に渡るので、className、style、イベントハンドラーはいつもどおり使えます。