# 购买按钮修复日志 - 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(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 响应正常