当前位置: 首页 > news >正文

北京网站建设方面南京网站建设网站制作

北京网站建设方面,南京网站建设网站制作,做it软件的网站,咨询公司怎么注册大家好#xff0c;我是若川。持续组织了近一年的源码共读活动#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与#xff0c;每周大家一起学习200行左右的源码#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。… 大家好我是若川。持续组织了近一年的源码共读活动感兴趣的可以 点此加我微信ruochuan12 参与每周大家一起学习200行左右的源码共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外目前建有江西|湖南|湖北籍前端群可加我微信进群。本文来自读者NewName 的投稿。基本我出一期源码共读就写一篇笔记的小伙伴他自己曾说学到很多同时更热爱学习了。日常开发中我们有时会遇到拷贝粘贴的功能笔者还记得曾经使用过react-copy-to-clipboard 和 vue-clipboard2。最近在看vueuse的时候发现了useClipboard就简单研究了一下日后vue3项目中如果有使用场景可以用一下。1.原生Clipboard在看useClipboard源码之前需要一些前置知识那就是原生Clipboard的API。首先通过一张图概览一下浏览器原生Clipboard的相关知识对上图涉及的知识逐一解释剪贴板 Clipboard API 提供了响应剪贴板命令与异步读写系统剪贴板的能力。从权限 Permissions API 获取权限之后才能访问剪贴板内容。Clipboard API 包括异步剪贴板 APIAsyncClipboard API和 剪贴板事件 APIClipboard Event API。Clipboard读取剪切板有两个方法read()和readText()分别用于读取数据比如图片和文本写入剪切板有两个方法write()和writeText()分别用于将任意数据写入和将文本写入。ClipboardEvent接口描述了与修改剪切板相关信息的事件包括剪切复制和粘贴。更多关于Clipboard API的细节以及兼容性问题您可以访问MDN文档详细学习。看一段示例代码navigator.clipboard.readText().then(clipText  document.querySelector(.editor).innerText  clipText);2.useClipboard2.1简介useClipboard是响应式的剪贴板 API。提供剪贴板命令(剪切、复制和粘贴)以及异步读取和写入系统剪贴板的能力。访问剪贴板内容需要获得Permission API的相关权限未经用户许可则不允许读取或更改剪贴板内容。2.2例子官方文档的示例代码如下所示script setup langts import { ref } from vue import { useClipboard, usePermission } from vueuse/coreconst input  ref()const { text, isSupported, copy }  useClipboard() const permissionRead  usePermission(clipboard-read) const permissionWrite  usePermission(clipboard-write) /scripttemplatediv v-ifisSupportednoteClipboard Permission: read b{{ permissionRead }}/b | writeb{{ permissionWrite }}/b/notepCurrent copied: code{{ text || none }}/code/pinput v-modelinput typetextbutton clickcopy(input)Copy/button/divp v-elseYour browser does not support Clipboard API/p /template首先引入 useClipboard从useClipboard中解构出text, isSupported, copy。text是当前从剪切板读取到的文本isSupported用于判断当前浏览器是否支持剪切板APIcopy是将文本写入到剪切板的方法。usePermission用于获取权限使用其查看了clipboard-read和clipboard-write的权限并将权限展示到页面上。通过下图可以看到读取的权限是prompt也就是询问而写入操作被授权了即granted。定义了响应式的变量input绑定到input标签上当用户点击按钮时则调用copy()方法将input的内容写入剪切板。初始时我们没有向剪切板写入内容text是空字符串所以页面显示当前拷贝内容为none当用户输入123点击copy按钮后text的值也就是从剪切板读取到的文本变成了123所以页面展示内容也变成了1232.3源码这里我们只保留了核心逻辑的40多行代码您可以查看源码 浏览全部代码。export function useClipboard(options: ClipboardOptionsMaybeRefstring | undefined  {}): ClipboardReturnboolean {const {navigator  defaultNavigator,read  false,source,copiedDuring  1500,}  optionsconst events  [copy, cut]const isSupported  Boolean(navigator  clipboard in navigator)const text  ref() // 与剪切板内容相对应的响应式值const copied  ref(false) // 是否拷贝完成const timeout  useTimeoutFn(()  copied.value  false, copiedDuring)// 更新textfunction updateText() {navigator!.clipboard.readText().then((value)  {text.value  value})}// 监听拷贝和剪切事件if (isSupported  read) {for (const event of events)useEventListener(event as WindowEventName, updateText)}// 将响应式值value拷贝到textasync function copy(value  unref(source)) {if (isSupported  value ! null) {await navigator!.clipboard.writeText(value)text.value  valuecopied.value  truetimeout.start()}}return {isSupported,text: text as ComputedRefstring,copied: copied as ComputedRefboolean,copy,} }2.3.1参数1navigator默认为window.navigator, 其定义如下export const defaultNavigator  /* #__PURE__ */ isClient ? window.navigator : undefined2read表示是否允许读取剪切板的内容默认值是false, 也就是默认不实时读取剪切板的内容。我们通过例子的截图知道默认clipboard-read的值是prompt即询问您可以通过浏览器的隐私设置来设置对于剪切板的权限当调用useClipboard时指定了read为true, 并且你允许查看复制到剪切板中的数据则此时只要剪切板里有内容就会实时显示const { text, isSupported, copy }  useClipboard({read:true})上图是选中了Clipboard这几个字后右键点击复制后系统弹出确认框。上图是点击“允许”后复制到剪切板的内容实时赋值给了text并显示在页面中了。3source拷贝的源数据可选的。source的原始值可以作为copy函数的默认值async function copy(value  unref(source)) {//省略}如下图所示当没有指定source时的情况可以看到value对应传给copy的参数input, 而source是undefined。4copiedDuring为重置copied的毫秒数copied用来表示是否拷贝完成。2.3.2updateTextfunction updateText() {navigator!.clipboard.readText().then((value)  {text.value  value}) }updateText用于更新text的值从剪切板中读取数据然后更新text读取剪切板数据使用的是readText()方法。2.3.3监听拷贝和剪切if (isSupported  read) {for (const event of events)useEventListener(event as WindowEventName, updateText) }在允许读取剪切板的情况下如果发生拷贝和剪切则用剪切板中的内容更新text。2.3.4 copy方法async function copy(value  unref(source)) {if (isSupported  value ! null) {await navigator!.clipboard.writeText(value)text.value  valuecopied.value  truetimeout.start()} }copy方法用于将参数value写入剪切板并赋值给text写入剪切板使用的是writeText()方法。至此useClipbord的源码就分析完了挺简单的但是读完也有收获。3.总结本文介绍了原生的Clipboard API之后又介绍了useClipboard 的使用然后结合示例代码的调试过程分析了useClipboard 的源码。Clipboard API中的readText()和 writeText()是useClipboard 的灵魂。················· 若川简介 ·················你好我是若川毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》20余篇在知乎、掘金收获超百万阅读。从2014年起每年都会写一篇年度总结已经坚持写了8年点击查看年度总结。同时最近组织了源码共读活动帮助4000前端人学会看源码。公众号愿景帮助5年内前端人走向前列。扫码加我微信 ruochuan12、拉你进源码共读群今日话题目前建有江西|湖南|湖北 籍 前端群想进群的可以加我微信 ruochuan12 进群。分享、收藏、点赞、在看我的文章就是对我最大的支持
http://icebutterfly214.com/news/23665/

相关文章:

  • 2025年11月美白面霜产品排名榜:持证美白温和修护全解析
  • 2025年11月货架厂家综合排行:专业顾问的客观评价与选择指南
  • 2025年11月市场证明机构排行:五家机构综合性能对比评估
  • 树莓派安装ubuntu22后apt安装软件报错:E: Sub-process /usr/bin/dpkg returned an error code (2)
  • springboot+easyui实现本学院学生去向登记表
  • powerGrid靶机复盘WP
  • 2025 年 11 月财税合规服务厂家推荐排行榜,电商/跨境电商/出口退税/公司注销/股权设计/平台报送/海外公司/审计报告全案解决方案
  • 2025 年 11 月疥螨阴虱药剂厂家推荐排行榜,扑灭司林/5%扑灭司林,苯甲酸苄酯/25%苯甲酸苄酯,15%胺氯菊百灭宁,科灭达公司推荐
  • Vibe Coding - 免费使用gpt-5、grok-code-fast-1进行氛围编程
  • 大家好
  • 前端框架深度解析:Vue 从入门到实战,掌握渐进式开发核心 - 实践
  • 浅谈dp中的最优化、计数问题
  • 2025北京一对一辅导/补习/培训/家教/网课推荐榜:金博教育领衔,3家优质机构凭个性化服务出圈,适配多元学习需求
  • CF1463E Plan of Lectures
  • 251107
  • P3978 概率论
  • 2025-11-07 PQ v.Next日志记录
  • 2025-11-07 早报新闻
  • R语言实现多组样本两两t检验的完整教程
  • SDOI 2024游记兼退役游记
  • NOIP 模拟赛 3 比赛总结
  • 2025年TWS耳机磁铁厂家权威推荐榜单:手机磁铁/钕铁硼磁铁/稀土磁铁源头厂家精选
  • 2025 年 11 月深圳店铺装修公司推荐排行榜,餐饮店铺装修,商场店铺装修,连锁店铺装修,零售店铺装修设计公司推荐
  • 护手仪ESD整改-ASIM阿赛姆
  • 2025年市面上成都小程序机构top10推荐:杰诚智享领跑行业
  • 气氛
  • 2025年热门成人自考机构推荐
  • 小 E 的传奇一生
  • 2025 年 11 月全自动加袋机厂家推荐排行榜,FFS/25公斤/吨袋/吨包全自动上袋机,肥料/铜精粉全自动吨袋上袋机,无锡江苏全自动吨包上袋机公司推荐
  • 2025 年 11 月包装称厂家推荐排行榜,全自动/定量/FFS重膜/高速/锂电/零排放/螺旋/吨袋包装称,铜精粉/肥料吨包包装称公司精选