Ir al contenido

List

Muestra una lista de elementos con soporte para paginación y estados de carga.

import { List } from 'asterui'

Lista Básica

Lista simple con elementos.

  • 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

Con Avatar

Elementos de lista con avatares y descripciones.

  • 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 Carga

Lista en estado de carga con esqueleto.

    Loading
import { List } from 'asterui'

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

export default App

Con Paginación

Lista con controles de paginación.

  • 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
PropiedadDescripciónTipoPredeterminado
dataSourceArray de elementos de datos a renderizarT[]-
renderItemFunción para renderizar cada elemento(item: T, index: number) => React.ReactNode-
headerContenido del encabezado de la listaReact.ReactNode-
footerContenido del pie de página de la listaReact.ReactNode-
loadingSi la lista está en estado de cargabooleanfalse
paginationConfiguración de paginaciónListPaginationConfig | falsefalse
gridConfiguración de diseño de cuadrículaListGridConfig-
borderedMostrar borde alrededor de la listabooleantrue
splitMostrar divisor entre elementosbooleantrue
sizeVariante de tamaño'sm' | 'md' | 'lg''md'
itemLayoutDirección de diseño para elementos'horizontal' | 'vertical''horizontal'
localeTexto de internacionalización{ emptyText?: React.ReactNode }-
loadMoreContenido de cargar más (ej. botón)React.ReactNode-
rowKeyExtracción de clave personalizada para elementoskeyof T | ((item: T) => React.Key)-
data-testidID de prueba para el componentestring'list'
aria-labelEtiqueta accesible para la listastring-
PropiedadDescripciónTipoPredeterminado
childrenContenido del elementoReact.ReactNode-
actionsBotones de acción mostrados a la derechaReact.ReactNode[]-
extraContenido adicional en el lado derechoReact.ReactNode-
classNameClases CSS adicionalesstring-
PropiedadDescripciónTipoPredeterminado
avatarElemento de avatar o iconoReact.ReactNode-
titleContenido del títuloReact.ReactNode-
descriptionContenido de descripciónReact.ReactNode-
  • Usa aria-label para proporcionar contexto a la lista
  • Los elementos de lista se renderizan en elementos semánticos <ul> o <ol>
  • El estado de carga se comunica a lectores de pantalla
  • Los controles de paginación son accesibles por teclado
  • El contenido de estado vacío se anuncia apropiadamente