@ant-design/x-card

中文文档
2.10.0发布于 2026/10/29MITTypeScriptESM + CJS近 30 天下载 6636

React card loader for dynamic content loading and management

原始使用文档
文档目录12 节
  1. Features
  2. Installation
  3. Usage
  4. Basic Usage
  5. Advanced Usage
  6. Using Hooks
  7. API
  8. CardLoader Props
  9. CardLoaderConfig
  10. useCardLoader Hook
  11. Development
  12. License

@ant-design/x-card

React card loader for dynamic content loading and management.

Features

  • 🚀 Dynamic Loading: Load cards asynchronously with configurable concurrency
  • 🔄 Retry Mechanism: Automatic retry with exponential backoff
  • ⚡ Performance: Optimized for large datasets with virtual scrolling support
  • 🎨 Customizable: Fully customizable card rendering and loading states
  • 📱 Responsive: Mobile-friendly responsive design
  • 🔧 TypeScript: Full TypeScript support

Installation

npm install @ant-design/x-card
# or
yarn add @ant-design/x-card
# or
pnpm add @ant-design/x-card

Usage

Basic Usage

import React from 'react';
import { CardLoader } from '@ant-design/x-card';

const App = () => {
  const cards = [
    {
      id: '1',
      title: 'Card 1',
      content: 'This is card content',
    },
    {
      id: '2',
      title: 'Card 2',
      content: 'Another card content',
    },
  ];

  return <CardLoader cards={cards} />;
};

Advanced Usage

import React from 'react';
import { CardLoader, useCardLoader } from '@ant-design/x-card';

const App = () => {
  const { state, actions } = useCardLoader({
    config: {
      maxConcurrent: 5,
      retryCount: 3,
      timeout: 10000,
    },
    customLoader: async (card) => {
      // Custom loading logic
      const response = await fetch(`/api/cards/${card.id}`);
      const data = await response.json();
      return data.content;
    },
  });

  React.useEffect(() => {
    actions.loadCards([
      { id: '1', title: 'Dynamic Card 1' },
      { id: '2', title: 'Dynamic Card 2' },
    ]);
  }, []);

  return (
    <CardLoader
      cards={state.cards}
      renderLoading={(card) => <div>Loading {card.title}...</div>}
      renderError={(error, card) => <div>Error: {error.message}</div>}
    />
  );
};

Using Hooks

import React from 'react';
import { useCardLoader } from '@ant-design/x-card';

const App = () => {
  const { state, actions } = useCardLoader();

  const addNewCard = () => {
    actions.addCard({
      id: Date.now().toString(),
      title: 'New Card',
      content: 'Dynamic content',
    });
  };

  return (
    <div>
      <button onClick={addNewCard}>Add Card</button>
      {state.cards.map((card) => (
        <div key={card.id}>
          <h3>{card.title}</h3>
          <p>{card.content}</p>
        </div>
      ))}
    </div>
  );
};

API

CardLoader Props

PropertyTypeDefaultDescription
cardsCardLoaderConfig[][]Array of card configurations
configCardLoaderConfig-Loader configuration
customLoaderfunction-Custom card loading function
renderEmptyfunction-Custom empty state renderer
renderLoadingfunction-Custom loading state renderer
renderErrorfunction-Custom error state renderer
onLoadingChangefunction-Loading state change callback
onCardLoadfunction-Card load success callback
onCardErrorfunction-Card load error callback
onAllCardsLoadedfunction-All cards loaded callback

CardLoaderConfig

PropertyTypeDefaultDescription
idstring-Unique card identifier
titlestring-Card title
contentReactNode-Card content
type'default' | 'info' | 'success' | 'warning' | 'error''default'Card type
loadingbooleanfalseLoading state
closablebooleanfalseWhether card can be closed
size'small' | 'middle' | 'large''middle'Card size
disabledbooleanfalseWhether card is disabled
classNamestring-Custom CSS class
styleCSSProperties-Custom inline style
extraReactNode-Extra content in card header

useCardLoader Hook

Returns an object with:

  • state: Current loader state
  • actions: Available actions
    • addCard(card): Add a new card
    • removeCard(id): Remove a card
    • updateCard(id, updates): Update a card
    • reloadCard(id): Reload a card
    • clearCards(): Clear all cards
    • getCardState(id): Get card state
    • loadCards(cards): Load multiple cards

Development

# Install dependencies
npm install

# Start development
npm run start

# Run tests
npm test

# Build
npm run compile

License

MIT

版本与发布记录

@ant-design/x-card 共发布 6 个版本,首次发布于 2026/03/31;过去 12 个月发布了 6 个版本。

版本发布日期距今
2.10.0latest2026/10/297 天前
2.9.02026/07/283 个月前
2.8.02026/06/084 个月前
2.7.0beta2026/04/306 个月前
2.6.02026/04/176 个月前
2.5.02026/03/317 个月前

关于 @ant-design/x-card 的常见问题

@ant-design/x-card 是什么?

React card loader for dynamic content loading and management

如何安装 @ant-design/x-card?

在项目目录运行 npm install @ant-design/x-card,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18.0.0)、react-dom(>=18.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@ant-design/x-card 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ant-design/x-card 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@ant-design/x-card 可以商用吗?

@ant-design/x-card 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ant-design/x-card 的下载量有多少?

根据 npm 官方下载统计,@ant-design/x-card 在 2026/10/06 – 2026/11/04 这 30 天内被下载 6,636 次,日均约 221 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ant-design/x-card 还在维护吗?

最新版本 2.10.0 发布于 2026/10/29(7 天前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/03/31。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。