IOS使用copy-to-clipboard在接口返回url后无法复制(弹出失败弹窗)

434 阅读1分钟

现象

image.png

当我在调接口后,使用 copy-to-clipboard 去复制接口返回的链接时,会弹出上面的弹窗

  const handleCopy = () => {
    //调接口
    fetch({
      url: api.GET_DOWNLOAD_URL,
      params
    }).then((res) => {
      if (res.success) {
        copy(res.data.url)
      }
    })
  }

但是直接使用 copy 复制一个常量,就不会弹

const handleCopy = () => {
  copy(url)
}

原因

copy-to-clipboard 有一段这个代码,复制失败就会出现那个弹窗

image.png

image.png

解决办法:

给 copy 加一个 timeout(具体原理我不清楚,但是这样确实可以解决)

  const handleCopy = () => {
    //调接口
    fetch({
      url: api.GET_DOWNLOAD_URL,
      params
    }).then((res) => {
      if (res.success) {
        setTimeout(() => {
          copy(res.data.url)
        }, 0)
      }
    })
  }