Aller au contenu

List

Affichez une liste d’éléments avec support de la pagination et des états de chargement.

import { List } from 'asterui'

Liste basique

Liste simple avec éléments.

  • Racing car sprints past
  • Japanese princess unveiled
  • Australian walks 100km
  • Man charged over missing wedding
import { List } from 'asterui'

function App() {
  const basicData = [
    'Racing car sprints past',
    'Japanese princess unveiled',
    'Australian walks 100km',
    'Man charged over missing wedding',
  ];
  
  return (
      <List
        dataSource={basicData}
        renderItem={(item) => <List.Item>{item}</List.Item>}
      />
    )
}

export default App

Avec avatar

Éléments de liste avec avatars et descriptions.

  • Alice Johnson
    Alice Johnson
    alice@example.com
  • Bob Smith
    Bob Smith
    bob@example.com
  • Carol White
    Carol White
    carol@example.com
import { List, Avatar } from 'asterui'

function App() {
  const avatarData = [
    {
      name: 'Alice Johnson',
      email: 'alice@example.com',
      avatar: 'https://i.pravatar.cc/150?img=5',
    },
    {
      name: 'Bob Smith',
      email: 'bob@example.com',
      avatar: 'https://i.pravatar.cc/150?img=12',
    },
    {
      name: 'Carol White',
      email: 'carol@example.com',
      avatar: 'https://i.pravatar.cc/150?img=9',
    },
  ];
  
  return (
      <List
        dataSource={avatarData}
        renderItem={(item) => (
          <List.Item>
            <List.Item.Meta
              avatar={<Avatar src={item.avatar} alt={item.name} />}
              title={item.name}
              description={item.email}
            />
          </List.Item>
        )}
      />
    )
}

export default App

État de chargement

Liste en état de chargement avec squelette.

    Loading
import { List } from 'asterui'

function App() {
  return (
      <List
        dataSource={[]}
        renderItem={(item) => <List.Item>{item}</List.Item>}
        loading
      />
    )
}

export default App

Avec pagination

Liste avec contrôles de pagination.

  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
import { List } from 'asterui'
import { useState } from 'react'

function App() {
  const allData = Array.from({ length: 23 }, (_, i) => `Item ${i + 1}`);
  const [page, setPage] = useState(1);
  const pageSize = 5;
  const start = (page - 1) * pageSize;
  const end = start + pageSize;
  const currentData = allData.slice(start, end);
  
  return (
      <List
        dataSource={currentData}
        renderItem={(item) => <List.Item>{item}</List.Item>}
        pagination={{
          current: page,
          pageSize,
          total: allData.length,
          onChange: setPage,
        }}
      />
    )
}

export default App
PropriétéDescriptionTypePar défaut
dataSourceTableau d’éléments de données à rendreT[]-
renderItemFonction pour rendre chaque élément(item: T, index: number) => React.ReactNode-
headerContenu de l’en-tête de listeReact.ReactNode-
footerContenu du pied de page de listeReact.ReactNode-
loadingIndique si la liste est en état de chargementbooleanfalse
paginationConfiguration de paginationListPaginationConfig | falsefalse
gridConfiguration de mise en page en grilleListGridConfig-
borderedAfficher la bordure autour de la listebooleantrue
splitAfficher le diviseur entre les élémentsbooleantrue
sizeVariante de taille'sm' | 'md' | 'lg''md'
itemLayoutDirection de mise en page pour les éléments'horizontal' | 'vertical''horizontal'
localeTexte d’internationalisation{ emptyText?: React.ReactNode }-
loadMoreContenu de chargement supplémentaire (par ex., bouton)React.ReactNode-
rowKeyExtraction de clé personnalisée pour les élémentskeyof T | ((item: T) => React.Key)-
data-testidID de test pour le composantstring'list'
aria-labelÉtiquette accessible pour la listestring-
PropriétéDescriptionTypePar défaut
childrenContenu de l’élémentReact.ReactNode-
actionsBoutons d’action affichés à droiteReact.ReactNode[]-
extraContenu supplémentaire sur le côté droitReact.ReactNode-
classNameClasses CSS supplémentairesstring-
PropriétéDescriptionTypePar défaut
avatarÉlément avatar ou icôneReact.ReactNode-
titleContenu du titreReact.ReactNode-
descriptionContenu de la descriptionReact.ReactNode-
  • Utilisez aria-label pour fournir un contexte pour la liste
  • Les éléments de liste sont rendus dans des éléments sémantiques <ul> ou <ol>
  • L’état de chargement est communiqué aux lecteurs d’écran
  • Les contrôles de pagination sont accessibles au clavier
  • Le contenu de l’état vide est correctement annoncé