リスト React コンポーネント

リストビューは、アプリでよく見られる汎用性の高い強力なユーザーインターフェースコンポーネントです。リストビューは、セクション/グループに分割できる複数の行のスクロール可能なリストでデータを表示します。

リストビューには多くの目的があります

リストReactコンポーネントは、Framework7のリストビューコンポーネントを表します。

リストコンポーネント

以下のコンポーネントが含まれています

リストのプロパティ

プロパティタイプデフォルト説明
<List> プロパティ
insetbooleanリストをインセットにします。テーマ固有のレイアウトには、`insetIos` と `insetMd` プロパティが使用できます
xsmallInsetbooleanアプリの幅が480px以上のときにリストをインセットにします。テーマ固有のレイアウトには、`xsmallInsetIos` と `xsmallInsetMd` プロパティが使用できます
smallInsetbooleanアプリの幅が568px以上のときにリストをインセットにします。テーマ固有のレイアウトには、`smallInsetIos` と `smallInsetMd` プロパティが使用できます
mediumInsetbooleanアプリの幅が768px以上のときにリストをインセットにします。テーマ固有のレイアウトには、`mediumInsetIos` と `mediumInsetMd` プロパティが使用できます
largeInsetbooleanアプリの幅が1024px以上のときにリストをインセットにします。テーマ固有のレイアウトには、`largeInsetIos` と `largeInsetMd` プロパティが使用できます
xlargeInsetbooleanアプリの幅が1200px以上のときにリストをインセットにします。テーマ固有のレイアウトには、`xlargeInsetIos` と `xlargeInsetMd` プロパティが使用できます
strongbooleanリストに強調表示を追加します。テーマ固有のレイアウトには、`strongIos` と `strongMd` プロパティが使用できます
outlinebooleanリストをアウトライン(境界線付き)にします。テーマ固有のレイアウトには、`outlineIos` と `outlineMd` プロパティが使用できます
dividersbooleanリストアイテムの間に区切り線(境界線)を追加します。テーマ固有のレイアウトには、`dividersIos` と `dividersMd` プロパティが使用できます
mediaListbooleanfalseメディアリストを有効にします
linksListbooleanfalse簡略化されたリンクリストを有効にします
simpleListbooleanfalse簡略化されたシンプルリストを有効にします
sortablebooleanfalseソート可能なリストを有効にします
sortableOppositebooleanfalse反対側(LTRでは左側)にソート可能なハンドラーをレンダリングします
sortableTapHoldbooleanfalseアイテムのタップアンドホールド(長押し)でリストアイテムをソートできるようにします。この場合、アプリはカスタムの `taphold` イベントに依存します。正しく動作させるには、アプリパラメータ `touch.tapHold: true` も有効にしていることを確認してください
sortableEnabledbooleanfalseソート可能なリストのソートを有効にします
sortableMoveElementsboolean渡されると、同じグローバルアプリパラメータ `sortable.moveElements` が上書きされます。
menuListbooleanメニューリストを有効にします
accordionbooleanfalseアコーディオンリストを有効にします
accordionOppositebooleanfalse反対側(LTRでは左側)にアコーディオンシェブロンアイコンをレンダリングします
contactsListbooleanfalseスタイリングに必要な追加クラスを追加することにより、連絡先リストを有効にします
formbooleanfalse`<div>` の代わりに `<form>` タグをリストブロックで有効にします
formStoreDatabooleanfalse現在のフォームのフォームストレージを有効にします
noChevronbooleanfalseネストされたリストアイテムリンクの「シェブロン」アイコンを削除します
chevronCenterbooleanfalseネストされたメディアリストアイテムの中央(垂直方向)に「シェブロン」アイコンを設定します
tabbooleanfalseブロックをタブとして使用する必要がある場合に追加の「タブ」クラスを追加します
tabActivebooleanfalseブロックをタブとして使用し、アクティブなタブにする場合に追加の「tab-active」クラスを追加します
virtualListbooleanfalse仮想リストを有効にします
virtualListParamsobject仮想リストパラメータを持つオブジェクト
<ListGroup> プロパティ
mediaListbooleanfalseこのグループのメディアリストを有効にします
sortablebooleanfalseこのグループのソート可能なリストを有効にします
sortableTapHoldbooleanfalseアイテムのタップアンドホールド(長押し)でリストアイテムをソートできるようにします。この場合、アプリはカスタムの `taphold` イベントに依存します。正しく動作させるには、アプリパラメータ `touch.tapHold: true` も有効にしていることを確認してください
simpleListbooleanfalseこのグループの簡略化されたシンプルリストを有効にします

リストのイベント

イベント説明
<List> イベント
tabShowリストブロックタブが表示/アクティブになったときにイベントがトリガーされます
tabHideリストブロックタブが非表示/非アクティブになったときにイベントがトリガーされます
submitリストがフォームとして使用されている場合(`form` プロパティが有効になっている場合)、リストフォームの送信時にイベントがトリガーされます
<List> ソート可能な特定のイベント
sortableEnableソートモードが有効になったときにイベントがトリガーされます
sortableDisableソートモードが無効になったときにイベントがトリガーされます
sortableSortユーザーが現在ソートされている要素を新しい位置にリリースした後にイベントがトリガーされます。 `event.detail` には、ソートされたリストアイテムの開始/新しいインデックス番号を持つ `from` と `to` プロパティを持つオブジェクトが含まれます
<List> 仮想リストの特定のイベント
virtualItemBeforeInsertアイテムが仮想ドキュメントフラグメントに追加される前にイベントがトリガーされます
virtualItemsBeforeInsert現在のDOMリストが削除された後、新しいドキュメントが挿入される前にイベントがトリガーされます
virtualItemsAfterInsertアイテムが挿入された新しいドキュメントフラグメントの後にイベントがトリガーされます
virtualBeforeClear現在のDOMリストが削除され、新しいドキュメントフラグメントに置き換えられる前にイベントがトリガーされます

リストのスロット

リストReactコンポーネント(`<List>`)には、カスタム要素用の追加スロットがあります

仮想リスト

仮想リストの使用法と例については、仮想リストReactコンポーネントのドキュメントを参照してください。

ソート可能なリスト

ソート可能なリストの使用法と例については、ソート可能なReactコンポーネントのドキュメントを参照してください。

アコーディオンリスト

アコーディオンリストの使用法と例については、アコーディオンReactコンポーネントのドキュメントを参照してください。

list.jsx
import React from 'react';
import {
  Navbar,
  Page,
  BlockTitle,
  BlockFooter,
  Block,
  List,
  ListItem,
  ListGroup,
  Icon,
  Toggle,
} from 'framework7-react';

export default () => (
  <Page>
    <Navbar title="List View" />
    <Block>
      <p>
        Framework7 allows you to be flexible with list views (table views). You can make them as
        navigation menus, you can use there icons, inputs, and any elements inside of the list, and
        even make them nested:
      </p>
    </Block>
    <BlockTitle>Simple List</BlockTitle>
    <List dividersIos simpleList>
      <ListItem title="Item 1" />
      <ListItem title="Item 2" />
      <ListItem title="Item 3" />
    </List>

    <BlockTitle>Strong List</BlockTitle>
    <List dividersIos simpleList strong>
      <ListItem title="Item 1" />
      <ListItem title="Item 2" />
      <ListItem title="Item 3" />
    </List>

    <BlockTitle>Strong Outline List</BlockTitle>
    <List dividersIos simpleList strong outline>
      <ListItem title="Item 1" />
      <ListItem title="Item 2" />
      <ListItem title="Item 3" />
    </List>

    <BlockTitle>Strong Inset List</BlockTitle>
    <List dividersIos simpleList strong inset>
      <ListItem title="Item 1" />
      <ListItem title="Item 2" />
      <ListItem title="Item 3" />
    </List>

    <BlockTitle>Strong Outline Inset List</BlockTitle>
    <List dividersIos simpleList strong outline inset>
      <ListItem title="Item 1" />
      <ListItem title="Item 2" />
      <ListItem title="Item 3" />
    </List>

    <BlockTitle>Simple Links List</BlockTitle>
    <List dividersIos outlineIos strongIos>
      <ListItem title="Link 1" link="#" />
      <ListItem title="Link 2" link="#" />
      <ListItem title="Link 3" link="#" />
    </List>
    <BlockTitle>Data list, with icons</BlockTitle>
    <List dividersIos outlineIos strongIos>
      <ListItem title="Ivan Petrov" after="CEO">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem title="John Doe" badge="5">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem title="Jenna Smith">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
    </List>
    <BlockTitle>Links</BlockTitle>
    <List dividersIos outlineIos strongIos>
      <ListItem link="#" title="Ivan Petrov" after="CEO">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem link="#" title="John Doe" after="Cleaner">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem link="#" title="Jenna Smith">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
    </List>
    <BlockTitle>Links, Header, Footer</BlockTitle>
    <List dividersIos outlineIos strongIos>
      <ListItem link="#" header="Name" title="John Doe" after="Edit">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem link="#" header="Phone" title="+7 90 111-22-3344" after="Edit">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem link="#" header="Email" title="john@doe" footer="Home" after="Edit">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem link="#" header="Email" title="john@framework7" footer="Work" after="Edit">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
    </List>
    <BlockTitle>Links, no icons</BlockTitle>
    <List dividersIos outlineIos strongIos>
      <ListItem link="#" title="Ivan Petrov" />
      <ListItem link="#" title="John Doe" />
      <ListItem groupTitle title="Group Title Here" />
      <ListItem link="#" title="Ivan Petrov" />
      <ListItem link="#" title="Jenna Smith" />
    </List>
    <BlockTitle>Grouped with sticky titles</BlockTitle>
    <List dividersIos outlineIos strongIos>
      <ListGroup>
        <ListItem title="A" groupTitle />
        <ListItem title="Aaron " />
        <ListItem title="Abbie" />
        <ListItem title="Adam" />
      </ListGroup>
      <ListGroup>
        <ListItem title="B" groupTitle />
        <ListItem title="Bailey" />
        <ListItem title="Barclay" />
        <ListItem title="Bartolo" />
      </ListGroup>
      <ListGroup>
        <ListItem title="C" groupTitle />
        <ListItem title="Caiden" />
        <ListItem title="Calvin" />
        <ListItem title="Candy" />
      </ListGroup>
    </List>
    <BlockTitle>Mixed and nested</BlockTitle>
    <List dividersIos outlineIos strongIos>
      <ListItem link="#" title="Ivan Petrov" after="CEO">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem link="#" title="Two icons here">
        <Icon slot="media" icon="icon-f7" />
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem title="No icons here" />
      <li>
        <ul>
          <ListItem link="#" title="Ivan Petrov" after="CEO">
            <Icon slot="media" icon="icon-f7" />
          </ListItem>
          <ListItem link="#" title="Two icons here">
            <Icon slot="media" icon="icon-f7" />
            <Icon slot="media" icon="icon-f7" />
          </ListItem>
          <ListItem title="No icons here" />
          <ListItem link="#" title="Ultra long text goes here, no, it is really really long">
            <Icon slot="media" icon="icon-f7" />
          </ListItem>
          <ListItem title="With toggle">
            <Icon slot="media" icon="icon-f7" />
            <Toggle slot="after" />
          </ListItem>
        </ul>
      </li>
      <ListItem link="#" title="Ultra long text goes here, no, it is really really long">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem title="With toggle">
        <Icon slot="media" icon="icon-f7" />
        <Toggle slot="after" />
      </ListItem>
    </List>

    <BlockTitle>Tablet inset</BlockTitle>
    <List dividersIos outlineIos strongIos mediumInset>
      <ListItem link="#" title="Ivan Petrov" after="CEO">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem link="#" title="Two icons here">
        <Icon slot="media" icon="icon-f7" />
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <ListItem link="#" title="Ultra long text goes here, no, it is really really long">
        <Icon slot="media" icon="icon-f7" />
      </ListItem>
      <BlockFooter slot="after-list">
        <p>This list block will look like "inset" only on tablets (iPad)</p>
      </BlockFooter>
    </List>

    <BlockTitle>Media Lists</BlockTitle>
    <Block>
      <p>
        Media Lists are almost the same as Data Lists, but with a more flexible layout for
        visualization of more complex data, like products, services, user, etc.
      </p>
    </Block>
    <BlockTitle>Songs</BlockTitle>
    <List dividersIos mediaList outlineIos strongIos>
      <ListItem
        link="#"
        title="Yellow Submarine"
        after="$15"
        subtitle="Beatles"
        text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
      >
        <img
          slot="media"
          style={{ borderRadius: '8px' }}
          src="https://cdn.framework7.io/placeholder/people-160x160-1.jpg"
          width="80"
        />
      </ListItem>
      <ListItem
        link="#"
        title="Don't Stop Me Now"
        after="$22"
        subtitle="Queen"
        text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
      >
        <img
          slot="media"
          style={{ borderRadius: '8px' }}
          src="https://cdn.framework7.io/placeholder/people-160x160-2.jpg"
          width="80"
        />
      </ListItem>
      <ListItem
        link="#"
        title="Billie Jean"
        after="$16"
        subtitle="Michael Jackson"
        text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
      >
        <img
          slot="media"
          style={{ borderRadius: '8px' }}
          src="https://cdn.framework7.io/placeholder/people-160x160-3.jpg"
          width="80"
        />
      </ListItem>
    </List>
    <BlockTitle>Mail App</BlockTitle>
    <List dividersIos mediaList outlineIos strongIos>
      <ListItem
        link="#"
        title="Facebook"
        after="17:14"
        subtitle="New messages from John Doe"
        text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
      />
      <ListItem
        link="#"
        title="John Doe (via Twitter)"
        after="17:11"
        subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
        text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
      />
      <ListItem
        link="#"
        title="Facebook"
        after="16:48"
        subtitle="New messages from John Doe"
        text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
      />
      <ListItem
        link="#"
        title="John Doe (via Twitter)"
        after="15:32"
        subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
        text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
      />
    </List>
    <BlockTitle>Something more simple</BlockTitle>
    <List dividersIos mediaList outlineIos strongIos>
      <ListItem title="Yellow Submarine" subtitle="Beatles">
        <img
          slot="media"
          style={{ borderRadius: '8px' }}
          src="https://cdn.framework7.io/placeholder/fashion-88x88-1.jpg"
          width="44"
        />
      </ListItem>
      <ListItem link="#" title="Don't Stop Me Now" subtitle="Queen">
        <img
          slot="media"
          style={{ borderRadius: '8px' }}
          src="https://cdn.framework7.io/placeholder/fashion-88x88-2.jpg"
          width="44"
        />
      </ListItem>
      <ListItem title="Billie Jean" subtitle="Michael Jackson">
        <img
          slot="media"
          style={{ borderRadius: '8px' }}
          src="https://cdn.framework7.io/placeholder/fashion-88x88-3.jpg"
          width="44"
        />
      </ListItem>
    </List>
  </Page>
);