Files
websopy-taro/.workbuddy/memory/2026-06-30.md
赵忠林 dd183adaab fix(utils): 优化小程序端复制文本功能体验
- 小程序端直接调用原生 wx.setClipboardData,避免 Taro Promise 封装问题
- 避免微信小程序重复显示复制成功提示和误报复制失败
- 失败时仅在小程序端输出错误日志,非小程序端显示提示
- 修改首页外链跳转逻辑,支持相对路径跳转,小程序内外链复制提示提升用户体验
- 更新项目内剪切板使用规范文档,说明复制行为调整及符合相应规范要求
2026-06-30 18:10:29 +08:00

50 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 修复 WXSS 不兼容的 .\!visible CSS 选择器
- **问题**: Tailwind JIT 引擎把 JS 代码 `if (!visible)` 误识别为 `!visible` important 修饰符类名,生成 `.\!visible` CSS 选择器WXSS 不支持反斜杠转义的 `!`
- **修复**: 创建 PostCSS 插件 `postcss-remove-tailwind-important.js` 移除所有 `.\!xxx` 选择器
- **配置**: 更新 `postcss.config.js` 引入该插件(使用函数引用方式,非字符串模块名)
- **验证**: 构建通过,`.\!visible` 从输出中移除,`.visible` 保留
- **注意**: 项目中实际无人使用 Tailwind 的 `!` 修饰符类名,安全移除。将来若需使用,需创建对应 WXSS 兼容类名
## 替换项目中不兼容 WXSS 的 space-x/y-* 类名
- **问题**: `space-y-*` / `space-x-*` 依赖 `:not()` + `~` + CSS 变量 + 嵌套 calc()WXSS 不兼容
- **修复**:
- 源码中将所有 `space-y-*` 替换为 `flex flex-col gap-*`
- 注释中的 `space-y-*` 也一并替换,防止 Tailwind JIT 误扫描生成
- 扩展 PostCSS 插件为 `postcss-remove-wxss-incompatible.js`,一并移除 `space-*``divide-*` 规则
- 删除旧的 `postcss-remove-tailwind-important.js` 文件
- **涉及文件**: dealer/qrcode/index.tsx, dealer/invite-stats/index.tsx, components/QRScanModal.tsx
- **验证**: 构建通过,所有不兼容选择器已从输出中移除
## 审查并修复剪切板接口合规问题
- **问题**: 用户截图显示「复制成功」与系统「内容已复制」重复 Toast担心违反 5.15.4 剪切板接口滥用规范
- **审查结果**:
- 所有复制操作均为用户点击触发,无 `getClipboardData` 自动读取
- 无复制后强制跳转或中断业务流程
- 当前实现基本合规,主要问题是重复 Toast 影响体验
- **修复**: 更新 `src/utils/common.ts` 中的 `copyText` 函数小程序端不再显示自定义「复制成功」Toast由系统自带提示替代
- **验证**: weapp 构建通过
## 修复首页「复制失败」Toast 问题
- **问题**: 微信审核反馈小程序打开首页提示「复制失败」,截图显示该 Toast 来自产品矩阵页面
- **分析**:
- 首页无生命周期自动复制,复制均由用户点击触发
- 「立即开通」按钮点击后通过 `copyText` 复制外链,`copyText``fail` 回调会弹「复制失败」Toast
- 部分机型/场景下 `Taro.setClipboardData` 可能误报失败,导致审核不通过
- **修复**:
- 更新 `src/utils/common.ts``copyText`:小程序端直接调用原生 `wx.setClipboardData`,失败时只 `console.error` 不弹 Toast
- 优化 `src/pages/index/index.tsx``openMaybeLink`:相对路径改为 `Taro.navigateTo` 跳转,仅外链复制
- 「了解模板/插件市场」按钮不再调用 `openMaybeLink('/market')`,仅保留提示 Toast
- **验证**: weapp 构建通过dist 中不再包含「复制失败」字符串
## 修复 wx 全局变量 TypeScript 红色警告
- **问题**: `src/utils/common.ts` 中使用 `wx.setClipboardData`TypeScript 报「Cannot find name 'wx'」红色警告
- **原因**: 项目没有声明微信小程序原生全局对象 `wx` 的类型
- **修复**: 在 `types/global.d.ts` 中添加 `declare const wx: any;` 全局类型声明
- **验证**: `tsc` 不再报 `common.ts` 相关错误,`npx taro build --type weapp` 构建成功