feat(market-ranking): 完善行情订阅生命周期

This commit is contained in:
clz
2026-07-24 14:51:34 +08:00
parent 6c338fc497
commit 8e1a1f1eee
4 changed files with 137 additions and 3 deletions
+28
View File
@@ -42,6 +42,34 @@ doc/ HTTP 与 4106 行情接口文档
市场排名与 AI 选期分别通过独立的 `HqRequestClient` 构造行情订阅参数,共享
`common/HqFieldId.ets` 中的 4106 字段 ID。
## MarketRanking 生命周期
`MarketRankingNodeComponent` 出现时读取卡片配置、注册 `tcpReconnect` 事件监听,并在
`firstPageVisible``true` 时获取当前 Tab 的 contracts。contracts 返回后先生成占位列表,
再由 `MarketRankingHqRequestClient` 发起行情订阅,行情回调会整体替换 `CardData`
```text
aboutToAppear
→ 注册 TCP 重连事件
→ 获取当前 Tab 的 contracts
→ 填充合约占位列表
→ 页面可见时订阅行情
```
运行期间按以下规则更新:
- `refreshTrigger`:由父组件通过 `@Link` 传入;变化后停止旧行情、重新获取 contracts,
并在可见时重新订阅。
- `firstPageVisible`:由父组件通过 `@Provide` 提供,组件通过 `@Consume` 监听,默认
`true`。变为不可见时立即停止行情;恢复可见时优先使用已有 contracts 重新订阅,
没有 contracts 才重新请求。
- `tcpReconnect`:组件通过公共 `emitter` 监听。重连且页面可见时停止旧行情并重新订阅;
页面不可见时忽略,恢复可见后再订阅。
- Tab 切换:停止旧行情、清空列表、获取新 Tab 的 contracts,再订阅对应行情。
`aboutToDisappear` 会解绑 TCP 重连监听并停止行情订阅。HTTP 请求等待期间如果页面变为
不可见,contracts 仍可更新,但不会创建行情订阅。
## 数据与接口
当前 HTTP Fetcher 仅构造请求参数,行情客户端也尚未连接真实客户端桥接层;页面使用 Mock