微信小程序中需在 uni.setclipboarddata 的 success 回调首行立即执行 wx.hidetoast() 或 uni.hidetoast() 才能屏蔽原生“已复制”提示,再调用 uni.showtoast 显示自定义标题,否则二者会重叠。

直接改 uni.showToast 的 title 参数就行,但要注意微信小程序会自带一个“已复制”原生提示,不处理就会和你的自定义提示重叠。
微信小程序里怎么去掉原生“已复制”提示
微信调用 uni.setClipboardData 或 uni.copyToClipboard 后,会自动弹一个灰色小 toast(内容固定为“已复制”,无法修改),必须手动屏蔽:
- 在 success 回调里立刻调用
wx.hideToast()或uni.hideToast()—— 但注意:这个操作只对当前正在显示的 toast 有效,且必须紧接在复制成功后执行 - 更稳妥的做法是:先调
wx.hideToast(),再调uni.showToast(),避免两个 toast 叠在一起 - 如果用了
uni.copyToClipboard(Promise 版),记得在await后立即 hide,否则可能因执行时机错位而失效
uni.showToast 的 title 能不能动态传入中文/变量
能,但有长度限制和平台差异:
- 小程序端:带
icon: 'success'时最多显示 7 个汉字;icon: 'none'时最多两行,每行约 12–14 字符(取决于字体宽度) - App 端:只支持单行显示,超长会被截断,不换行
- 务必确保传入的是字符串,比如
title: `复制了「${this.text}」`,别传对象或 undefined
为什么改了 title 还显示“已复制”
常见原因不是代码写错了,而是触发路径不对:
- 你用的是
uni.setClipboardData,但它在微信小程序里底层调的是wx.setClipboardData,原生提示无法绕过 - 没在 success 回调第一行加
wx.hideToast(),而是等uni.showToast执行完才 hide,此时原生 toast 已消失或还没出现,hide 失效 - 在 H5 环境下误用了
uni.setClipboardData(它不生效),实际走的是navigator.clipboard.writeText,这个 API 根本不弹任何提示——所以你看到的“已复制”其实是你自己写的uni.showToast
真正要改文字,本质是控制谁来弹、什么时候弹、弹几次。微信那个“已复制”是硬编码的,躲不开,只能藏;你自己弹的那个,才是可完全定制的入口。











