1.sortableԴ?源码?
2.Vueä¸ä½¿ç¨Sortable
3.使用 SortableJS 组件的 Blazor 可排序列表
sortableԴ??
年末学习新技能,react拖拽组件与高效代码调试技巧不容错过!源码学习第三方库如react-sortable-hoc时,源码首先要掌握的源码就是调试技巧。首先,源码创建一个新项目,源码赤月风霜源码尝试简单的源码react-sortable-hoc示例,然后设置断点进行调试。源码但注意,源码直接在打包后的源码产物中打点是无用的,这时就需要启用sourcemap来映射源代码。源码在项目中开启sourcemap,源码unreal 源码 分析通过克隆并配置项目的源码rollup打包设置,确保调试时能访问源码。源码遇到只读源码文件时,源码检查CALL STACK,可能需要调整映射路径。若需修改node_modules中的文件,可使用patch-package避免覆盖。接下来,分析组件的初始化过程。SortableContainer负责管理,创建Manager对象并传递给子组件SortableElement。顺序回复源码SortableElement负责注册自身,SortableHandle则关注节点标识和事件绑定。理解事件触发顺序后,逐步探索handleStart、handlePress、handleSortMove等关键函数。handlePress利用克隆节点模拟拖拽,handleSortMove则调整节点位置并动画化排序,handleSortEnd则进行清理工作。react-sortable-hoc主要利用mousemove和touchmove事件,结合css3动画实现拖拽和排序。接口生成源码但要注意,它使用了不推荐的reactDom.findDomNodeapi,以及仅限于类组件使用。学习过程中,还可以记录一些实用的函数,如获取元素偏移、移动数组元素和过滤对象属性等。提升调试效率和理解库的工作原理,是学习react拖拽组件的重要一环。希望这些技巧能帮助你在年末的学习旅程中更顺利,别忘了分享给有需要的鸡腿辅助源码朋友哦!
Vueä¸ä½¿ç¨Sortable
ä¹åå¼åä¸ä¸ªåå°ç®¡çç³»ç»ï¼éé¢ç¨å°äº Vue å Element-UI è¿ä¸ªç»ä»¶åºï¼éå°ä¸ä¸ªæºæææçé®é¢ï¼å大家å享ä¸ä¸ãåºæ¯æ¯è¿æ ·ï¼å¨ä¸ä¸ªå表å±ç¤ºé¡µä¸ï¼æ使ç¨äº Element-UI çè¡¨æ ¼ç»ä»¶ï¼æ°çéæ±æ¯å¨åè¡¨æ ¼çåºç¡ä¸æ¯æææ½æåºãä½æ¯åæçç»ä»¶æ¬èº«ä¸æ¯æææ½æåºï¼èä¸ç±äºæ¯ç´æ¥å¼å ¥ç Element-UI ï¼ä¸æ¹ä¾¿ä¿®æ¹å®çæºç ï¼æ以æ¯è¾å¯è¡çæ¹æ³åªè½æ¯ç´æ¥æä½DOMã
å ·ä½çåæ³æ¯å¨ mounted çå½å¨æå½æ°éï¼å¯¹ this.$el è¿è¡çå®DOMçæä½ï¼çå¬ drag çä¸ç³»åäºä»¶ï¼å¨äºä»¶åè°é移å¨DOMï¼å¹¶æ´æ°dataã
HTML5 Drag äºä»¶è¿æ¯æºå¤çï¼å Touch äºä»¶å·®ä¸å¤ï¼èªå·±æå·¥å®ç°ä¹å¯ä»¥ï¼ä¸è¿è¿éå°±å·äºä¸ªæï¼ç´æ¥ç¨äºä¸ä¸ªå¼æºç Sortable åºï¼ç´æ¥ä¼ å ¥ this.$el ï¼çå¬å°è£ åçåè°ï¼å¹¶ä¸æ ¹æ®Vueçå¼å模å¼ï¼å¨ç§»å¨DOMçåè°éæ´æ°å®é çDataæ°æ®ï¼ä¿ææ°æ®åDOMçä¸è´æ§ã
å¦æä½ ä»¥ä¸ºå°è¿å°±ç»æäºï¼é£å°±å¤§éç¹éï¼å·è¿çæè¿æ©è¦è¿ãããæ¬ä»¥ä¸ºè¿ä¸ªæ¹æ¡æ¯å¾ç¾å¥½çï¼æ²¡æ³å°åæ³è°è¯ä¸ä¸ï¼å°±åºç°äºè¯¡å¼çç°è±¡ï¼AåBææ½äº¤æ¢ä½ç½®ä¹åï¼BåAåç¥å¥å¾æ¢åå»äºï¼è¿æ¯æä¹åäºï¼ä¼¼ä¹æ们çæä½æ²¡æä»ä¹é®é¢ï¼å¨çå®DOM移å¨äºä¹åï¼æ们ä¹ç§»å¨äºç¸åºç data ï¼æ°æ®æ°ç»ç顺åºå渲æåºDOMç顺åºåºè¯¥æ¯ä¸è´çã
é®é¢åºå¨åªéï¼æ们åå¿ä¸ä¸Vueçå®ç°åçï¼å¨Vue2.0ä¹åæ¯éè¿ defineProperty ä¾èµæ³¨å ¥åè·è¸ªçæ¹å¼å®ç°ååç»å®ãé对v-foræ°ç»æ令ï¼å¦ææå®äºå¯ä¸çKeyï¼åä¼éè¿é«æçDiffç®æ³è®¡ç®åºæ°ç»å å ç´ çå·®å¼ï¼è¿è¡æå°ç移å¨æå é¤æä½ãèVue2.0ä¹åå¨å¼å ¥äº Virtual Dom ä¹åï¼ Children å ç´ ç Dom Diff ç®æ³ååè å ¶å®æ¯ç¸ä¼¼çï¼å¯ä¸çåºå«å°±æ¯ï¼2.0ä¹åDiffç´æ¥é对 v-for æ令çæ°ç»å¯¹è±¡ï¼2.0ä¹ååé对 Virtual Dom ãDOM Diffç®æ³å¨è¿éä¸åèµè¿°ï¼è¿é解éçæ¯è¾æ¸ æ¥ virtual-dom diffç®æ³
å设æ们çå表å ç´ æ°ç»æ¯
渲æåºæ¥åçDOMèç¹æ¯
é£ä¹Virtual Dom对åºçç»æå°±æ¯
å设ææ½æåºä¹åï¼çå®çDOMå为
æ¤æ¶æ们åªæä½äºçå®DOMï¼æ¹ç¼äºå®çä½ç½®ï¼èVirtual Domçç»æ并没ææ¹åï¼ä¾ç¶æ¯
æ¤æ¶æ们æå表å ç´ ä¹æç §çå®DOMæåºååæ
è¿æ¶åæ ¹æ®Diffç®æ³ï¼è®¡ç®åºçPatch为ï¼VNodeå两项æ¯åç±»åçèç¹ï¼æ以ç´æ¥æ´æ°ï¼å³æ$Aèç¹æ´æ°æ$Bï¼æ$Bèç¹æ´æ°æ$Aï¼çå®DOMåååäº
æ以就åºç°äºææ½ä¹åå被Patchç®æ³æ´æ°äºä¸æ¬¡çé®é¢ï¼æä½è·¯å¾å¯ä»¥ç®åç解为
æ ¹æ¬åå æ¯ Virtual DOM å çå®DOM ä¹é´åºç°äºä¸ä¸è´ã
æ以å¨Vue2.0以åï¼å 为没æå¼å ¥ Virtual DOM ï¼è¿ä¸ªé®é¢æ¯ä¸åå¨çã
å¨ä½¿ç¨Vueæ¡æ¶çæ¶åè¦å°½éé¿å ç´æ¥æä½DOM
3.æ´å解å³ï¼ä¸èµ°patchæ´æ°ï¼éè¿v-if设置ï¼ç´æ¥éæ°æ¸²æä¸éãå½ç¶ä¸å»ºè®®è¿ä¹åï¼åªæ¯æä¾è¿ç§æè·¯~
æ以ï¼æ们平æ¶å¨ä½¿ç¨æ¡æ¶çæ¶åï¼ä¹è¦å»äºè§£æ¡æ¶çå®ç°åççï¼å¦åéå°ä¸äºæ£æçæ åµå°±ä¼æ ä»ä¸æ~
使用 SortableJS 组件的 Blazor 可排序列表
作者:Burke Holland 排版:Alan Wang
在 Web 应用程序中,一个常见功能部分是可排序列表。Blazor 开发者们可能怀念 SortableJS 这个强大的 JavaScript 库。为了填充这个空白,Burke Holland 开发了一个名为 Blazor Sortable 的组件,将其开源在 GitHub 上,供开发者使用。
Blazor Sortable 是一个社区组件,不是 Microsoft 的官方组件,但它提供了一种将 SortableJS 的功能集成到 Blazor 应用中的方法。Fluent UI 团队正在努力在未来版本的 Blazor 中集成可排序组件。
访问演示页面:[提供演示链接]
Burke 和 Jon Galloway,通过“Burke Learns Blazor”直播在 Twitch 和 .NET YouTube 上,共同致力于重建 theurlist.com 应用程序。如果您愿意加入他们的行列,提供帮助,将会非常欢迎。
在 Blazor 中构建可排序列表组件的需求促使 Burke 开发了 Blazor Sortable。SortableJS 提供了丰富的功能,包括排序、列表之间的排序、项目克隆、过滤、自定义动画、腰部支持等。
Blazor Sortable 包含了源代码和演示,用户只需要下载 Shared/SortableList.razor、Shared/SortableList.razor.css 和 Shared/SortableList.razor.js 文件。SortableList 组件是一个通用组件,需要提供项目列表和定义如何呈现列表中每个项目的模板。
为了使列表变得可排序,只需处理 OnUpdate 事件并自定义排序逻辑。每当列表排序时,OnUpdate 事件会传递包含已移动项目旧索引和新索引的元组,通过 SortList 方法解构元组并移动列表中的项目。
Blazor Sortable 支持多种功能,如列表之间的排序、克隆项目、过滤项目等。Burke 提供了一个示例,展示了如何在两个列表之间进行排序。
在设置 SortableList 的样式时,您可以覆盖默认样式以适应特定需求。默认样式会隐藏“ghost”元素,产生拖动间隙。您可以修改 SortableItemTemplate 子项内的样式,但必须使用“::deep”修饰符确保样式生效。
HTML5 的原生拖放支持在某些方面有局限性,无法提供理想的排序体验。因此,Blazor Sortable 选择使用 SortableJS 的 JavaScript 解决方案。如果您希望重新启用 HTML5 支持,只需在 SortableList.razor.razor.js 文件中删除 forceFallback: true 属性。
Blazor Sortable 是一个开源社区项目,欢迎开发者探索其功能并提供反馈。Burke 鼓励大家使用 Blazor Sortable 来创建具有高级排序功能的 Blazor 应用程序。您可以通过 GitHub 页面查看 Blazor Sortable 并分享您的想法。