// src/views/Community/components/DynamicNewsCard/constants.js // 动态新闻卡片组件 - 常量配置 // ========== 分页配置常量 ========== /** * 分页大小计算依据: * * 【四排模式 (FOUR_ROW_PAGE_SIZE)】 * - 容器高度: 800px (VirtualizedFourRowGrid) * - 单行高度: ~250px (包含卡片 + 间距) * - 每行显示: 4 列 * - 可视区域: 800px / 250px ≈ 3.2 行 * - overscan 缓冲: 2 行 (上下各预渲染1行) * - 实际渲染区域: 3.2 + 2 = 5.2 行 * - 单次加载数据量: 7.5 行 × 4 列 = 30 个 * - 设计目标: 提供充足的缓冲数据,确保快速滚动时不出现空白 * * 【纵向模式 (VERTICAL_PAGE_SIZE)】 * - 每页显示 10 条数据 * - 使用传统分页器,用户手动翻页 */ export const PAGINATION_CONFIG = { FOUR_ROW_PAGE_SIZE: 30, // 平铺模式每页数量 (7.5行 × 4列,包含缓冲) VERTICAL_PAGE_SIZE: 10, // 纵向模式每页数量 (传统分页) INITIAL_PAGE: 1, // 初始页码 }; // ========== 显示模式常量 ========== export const DISPLAY_MODES = { FOUR_ROW: 'four-row', // 平铺网格模式 VERTICAL: 'vertical', // 纵向分栏模式 }; export const DEFAULT_MODE = DISPLAY_MODES.VERTICAL; // ========== Toast 提示配置 ========== export const TOAST_CONFIG = { DURATION_ERROR: 3000, // 错误提示持续时间(毫秒) DURATION_WARNING: 2000, // 警告提示持续时间(毫秒) }; // ========== Socket 刷新防抖配置 ========== /** * Socket 新事件刷新防抖延迟(毫秒) * * 作用:避免短时间内收到多个新事件时频繁刷新列表 * * 场景示例: * - 第 1 秒:收到新事件 → 延迟 2 秒刷新 * - 第 2 秒:收到新事件 → 取消上次,重新延迟 2 秒 * - 第 3 秒:收到新事件 → 取消上次,重新延迟 2 秒 * - 第 5 秒:触发刷新 → 只发送 1 次 API 请求 * * 推荐值:2000ms (2 秒) * - 太短(如 500ms)→ 仍可能触发多次刷新 * - 太长(如 5000ms)→ 用户感知延迟过高 */ export const REFRESH_DEBOUNCE_DELAY = 2000;