Component dữ liệu

<List>, <Table> và <Tree>: ảo hóa, có thể sắp xếp và chọn.

<List>, <Table> và <Tree> hiển thị các tập dữ liệu lớn. Chỉ những dòng đang hiển thị mới được render.

Trực tiếp72×13 · booting Turbolog…tsx
preview://table:1
<Table  columns={[    { key: "name", header: "Service" },    { key: "region", header: "Region", width: 8 },    { key: "p95", header: "p95", width: 7, align: "right" },  ]}  rows={services}  sortable  selectionMode="multiple"  onSelect={(s) => router.push(`/services/${s.name}`)}/>

<List>, <Table> và <Tree> dùng chung một mô hình thao tác bàn phím.

PhímThao tác
↑ ↓ / j kDi chuyển
PgUp PgDn, Ctrl+U Ctrl+DDi chuyển một trang, nửa trang
Home End / g GĐến đầu, cuối
↵onSelect
Con lănDi chuyển con trỏ

Theo mặc định, chúng lấp đầy phần tử cha. Truyền height để cố định số dòng.

<List>

Danh sách ảo hóa. Mỗi dòng cao một ô.

<List  items={requests}  getLabel={(r) => `${r.method} ${r.path}`}  onSelect={open}/>
PropMô tả
itemsMảng bất kỳ
renderItem(item, { highlighted, focused }) => ReactNode
isItemDisabledMục con trỏ bỏ qua
heightSố dòng hiển thị (mặc định: lấp đầy)
highlightedIndex / onHighlightCon trỏ có kiểm soát
vimKeysj k g G (mặc định true)

<Table>

Các cột chia nhau chiều rộng còn lại trừ khi có đặt width. Tiêu đề và ô dùng cùng quy tắc flex nên luôn thẳng hàng.

Trường của cộtMô tả
keyId và hàm truy xuất mặc định
width / growSố ô cố định hoặc tỷ lệ phần còn lại
alignleft right center
valueGiá trị hiển thị và sắp xếp
renderNội dung ô tùy chỉnh
compareCách sắp xếp tùy chỉnh

Sắp xếp

Với sortable, nhấn số của cột để sắp xếp theo cột đó (nhấn lại để đảo chiều), s để chuyển lần lượt qua các cột và S để đảo chiều. Phép sắp xếp có tính ổn định. Dùng sort và onSortChange để kiểm soát.

Chọn

selectionMode="multiple" thêm cột đánh dấu; Space bật hoặc tắt lựa chọn cho dòng đang tô sáng. Dùng selectedKeys và onSelectionChange để kiểm soát lựa chọn, và getRowKey để có khóa ổn định.

<Tree>

Cây có thể mở rộng với các đường dẫn nhánh.

Trực tiếp56×11 · booting Turbolog…tsx
preview://tree:1
<Tree  data={[{ id: "app", label: "app", children: [{ id: "page", label: "page.tsx", hint: "2.8 kB" }] }]}  defaultExpanded={["app"]}  onSelect={(node) => open(node.id)}/>

→ mở rộng hoặc đi vào một nhánh. ← thu gọn hoặc chuyển đến nút cha. Space chuyển đổi trạng thái mở rộng. flattenTree(data, expanded) cung cấp các dòng đang hiển thị nếu bạn cần trình render riêng.

Sửa trang này trên GitHub