Pular para o conteúdo

List

Exiba uma lista de itens com suporte para paginação e estados de carregamento.

import { List } from 'asterui'

Lista Básica

Lista simples com itens.

  • 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

Com Avatar

Itens de lista com avatares e descrições.

  • 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

Estado de Carregamento

Lista em estado de carregamento com skeleton.

    Loading
import { List } from 'asterui'

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

export default App

Com Paginação

Lista com controles de paginação.

  • 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
PropriedadeDescriçãoTipoPadrão
dataSourceArray de itens de dados para renderizarT[]-
renderItemFunção para renderizar cada item(item: T, index: number) => React.ReactNode-
headerConteúdo do cabeçalho da listaReact.ReactNode-
footerConteúdo do rodapé da listaReact.ReactNode-
loadingSe a lista está em estado de carregamentobooleanfalse
paginationConfiguração de paginaçãoListPaginationConfig | falsefalse
gridConfiguração de layout de gradeListGridConfig-
borderedMostrar borda ao redor da listabooleantrue
splitMostrar divisor entre itensbooleantrue
sizeVariante de tamanho'sm' | 'md' | 'lg''md'
itemLayoutDireção do layout para itens'horizontal' | 'vertical''horizontal'
localeTexto de internacionalização{ emptyText?: React.ReactNode }-
loadMoreConteúdo de carregar mais (ex: botão)React.ReactNode-
rowKeyExtração de chave personalizada para itenskeyof T | ((item: T) => React.Key)-
data-testidID de teste para o componentestring'list'
aria-labelRótulo acessível para a listastring-
PropriedadeDescriçãoTipoPadrão
childrenConteúdo do itemReact.ReactNode-
actionsBotões de ação exibidos à direitaReact.ReactNode[]-
extraConteúdo extra no lado direitoReact.ReactNode-
classNameClasses CSS adicionaisstring-
PropriedadeDescriçãoTipoPadrão
avatarElemento de avatar ou íconeReact.ReactNode-
titleConteúdo do títuloReact.ReactNode-
descriptionConteúdo da descriçãoReact.ReactNode-
  • Use aria-label para fornecer contexto para a lista
  • Itens de lista são renderizados em elementos <ul> ou <ol> semânticos
  • Estado de carregamento é comunicado para leitores de tela
  • Controles de paginação são acessíveis via teclado
  • Conteúdo de estado vazio é anunciado adequadamente