72 lines
2.2 KiB
Markdown
72 lines
2.2 KiB
Markdown
# 购买按钮修复日志 - 2026-03-20(手动地址模式)
|
||
|
||
## 修复时间
|
||
2026-03-20
|
||
|
||
## 问题描述
|
||
trc-ico.newassetchain.io 购买区域:用户点击"Enter address manually"输入地址并点击 Confirm 后,
|
||
购买按钮没有出现,界面无任何变化。
|
||
|
||
## 根本原因
|
||
文件: `client/src/pages/Home.tsx`
|
||
`EVMPurchasePanel` 组件中,`WalletSelector` 的 `onAddressDetected` 回调只显示了 toast 提示,
|
||
没有更新组件状态,导致 `wallet.isConnected` 仍然为 `false`,购买按钮不渲染。
|
||
|
||
```tsx
|
||
// 修复前(问题代码)
|
||
onAddressDetected={(addr) => {
|
||
toast.success(`Connected: ${addr.slice(0, 6)}...${addr.slice(-4)}`);
|
||
// ← 没有更新任何状态!
|
||
}}
|
||
```
|
||
|
||
## 修复方案
|
||
在 `EVMPurchasePanel` 中添加 `manualAddress` 状态:
|
||
|
||
```tsx
|
||
const [manualAddress, setManualAddress] = useState<string | null>(null);
|
||
const effectiveAddress = wallet.address || manualAddress;
|
||
const isManualMode = !wallet.isConnected && !!manualAddress;
|
||
```
|
||
|
||
修改 `onAddressDetected` 回调:
|
||
```tsx
|
||
onAddressDetected={(addr) => {
|
||
setManualAddress(addr); // ← 保存手动输入的地址
|
||
toast.success(`Address confirmed: ${addr.slice(0, 6)}...${addr.slice(-4)}`);
|
||
}}
|
||
```
|
||
|
||
修改条件渲染:
|
||
- `!wallet.isConnected && !manualAddress` → 显示 WalletSelector
|
||
- `isManualMode` → 显示购买按钮(提示需要连接钱包完成链上交易)
|
||
- `wallet.isConnected` → 显示正常购买按钮
|
||
|
||
## 构建信息
|
||
- 构建时间: 2026-03-20
|
||
- 新 bundle: index-By9gUhW4.js (815.67 kB)
|
||
- 构建耗时: 7.18s
|
||
- 1858 modules transformed
|
||
|
||
## 部署步骤
|
||
1. 修改 client/src/pages/Home.tsx
|
||
2. 执行 pnpm run build
|
||
3. 删除 dist/public/__manus__ 目录
|
||
4. PM2 重启: pm2 restart nac-presale-test
|
||
5. 验证: HTTP 200 响应
|
||
|
||
## 备份文件
|
||
- Home.tsx 备份: client/src/pages/Home.tsx.bak.manual_addr_fix_20260320
|
||
- dist 备份: dist/public.bak.manual_addr_fix_20260320
|
||
|
||
## Git 提交
|
||
- commit hash: 5136b59
|
||
- 提交信息: fix: 修复手动输入地址后购买按钮不显示的问题
|
||
- 推送到: nacadmin/nac-presale master
|
||
|
||
## 验证结果
|
||
- 用户输入地址 0x1234...7890 并点击 Confirm
|
||
- 购买按钮出现:"Connect Wallet to Buy 5.00K XIC"
|
||
- 地址信息栏显示手动地址(琥珀色样式)
|
||
- HTTP 200 响应正常
|