跳到主要内容

选择与批量操作

对于一个或多个已加载页面中的已选行,存储 explicit selection:

{mode: 'explicit', ids: ['o_1', 'o_2']}

对于全选匹配项,不要下载或提交每个匹配行的 ID。onSelectAllMatching 接收 active TableQuery;应用将它发送给 server,server 返回与 query 绑定的 token:

{
selectionToken: 'server-issued-token',
normalizedQuery: query,
selectedCount: 812,
expiresAt: '2026-08-14T10:30:00.000Z',
}

将结果存储为 allMatching TableSelection variant,并包含 excludedIds。server 负责 token issuance、expiry、query normalization、permissions 和 revocation。拒绝过期 token;isSelectionExpired 可帮助 client 避免展示陈旧的 action。

每个 TableBulkAction.perform 都会接收 idempotencyKey。将它与 bulk request 一同转发,并让 server 按 action 和 key 对 retries 去重。当应用尚没有自己的 key 时,createIdempotencyKey 会创建 client key。

bulkActions: [{
id: 'archive',
content: 'Archive',
perform: ({selection, idempotencyKey}) => archiveOrders(selection, idempotencyKey),
}]

archiveOrders 是 application-owned integration code。它必须校验 token 或 IDs、当前 authorization 与 idempotency key,然后返回 completedaccepted TableBulkActionResult。只有在收到该 response 后才遵从 clearSelection(或 shouldClearSelection)。

请查看完整的选择与操作示例