TransactionItem 交易记录项
显示单条交易记录
功能描述
展示单条交易的关键信息,用于交易历史列表。
属性规范
| 属性 | 类型 | 必需 | 默认值 | 说明 |
|---|---|---|---|---|
| transaction | Transaction | Y | - | 交易数据 |
| onPress | () => void | N | - | 点击回调 |
Transaction 数据结构
Transaction {
hash: string
type: TransactionType
status: TransactionStatus
amount: string
symbol: string
decimals: number
timestamp: number
counterparty?: string // 对方地址
memo?: string
}
TransactionType =
| 'send' // 发送
| 'receive' // 接收
| 'swap' // 兑换
| 'approve' // 授权
| 'stake' // 质押
| 'unstake' // 解除质押
| 'contract' // 合约调用
| 'mint' // 铸造
TransactionStatus =
| 'pending' // 等待确认
| 'confirming' // 确认中
| 'confirmed' // 已确认
| 'failed' // 失败布局规范
┌─────────────────────────────────────────┐
│ [类型图标] 发送 │
│ To: 0x1234...5678 │
│ │
│ -1.5 ETH │ ← 金额
│ 14:30 [状态] │ ← 时间 + 状态
└─────────────────────────────────────────┘显示规则
类型图标和标题
| 类型 | 图标 | 标题 |
|---|---|---|
| send | ↑ (红) | 发送 |
| receive | ↓ (绿) | 接收 |
| swap | ⇄ | 兑换 |
| approve | ✓ | 授权 |
| stake | 🔒 | 质押 |
| unstake | 🔓 | 解除质押 |
| contract | ⎔ | 合约调用 |
| mint | ✦ | 铸造 |
金额颜色
| 类型 | 符号 | 颜色 |
|---|---|---|
| send | - | 红色 |
| receive | + | 绿色 |
| 其他 | 无 | 默认 |
状态标签
| 状态 | 样式 | 显示 |
|---|---|---|
| pending | 黄色背景 | 等待中 |
| confirming | 蓝色背景 | 确认中 (3/12) |
| confirmed | 无标签 | 不显示 |
| failed | 红色背景 | 失败 |
时间格式
| 场景 | 格式 |
|---|---|
| 今天 | HH:mm |
| 今年 | MM-DD HH:mm |
| 往年 | YYYY-MM-DD |
行为规范
必须 (MUST)
- 显示交易类型图标和标题
- 显示金额(带符号和颜色)
- 显示时间
- pending/failed 显示状态标签
建议 (SHOULD)
- 显示对方地址(缩略)
- 点击跳转交易详情
- pending 状态显示加载动画
可选 (MAY)
- 显示备注(memo)
- 支持滑动操作(复制哈希、浏览器查看)
设计标注
尺寸规格
| 部分 | 规格 |
|---|---|
| 高度 | 72px |
| 内边距 | 16px |
| 图标尺寸 | 40px |
| 金额字号 | 16px |
| 辅助文字字号 | 14px |
状态标签
| 部分 | 规格 |
|---|---|
| 内边距 | 4px 8px |
| 圆角 | 4px |
| 字号 | 12px |
交互状态
按压态
背景色变化:--color-muted/50加载态(pending 交易)
图标区域显示旋转动画