vue组件拖拽自定义界面,vue可视化拖拽流程框架

  vue组件拖拽自定义界面,vue可视化拖拽流程框架

  vue3正式版已经发布半年了,我们要跟上时代的潮流,跟上vue3带来的诸多变化。下面这篇文章主要介绍使用Vue3实现主页拖动和自定义功能的相关信息。有需要的朋友可以参考一下。

  

目录

  前期准备启动方法1、方法2、方案3最终实现结果汇总

  

前期准备

  Vue3TsVueDragable (4 version 4或更高版本)期望可以根据需要加载和导入拖动组件。

  

开始

  首先,我们来看看VueDragable的文档效果。

  文档的效果是基于列表的拖放排序,所以回到我们的预期,我们想通过动态引入组件来进行拖放排序,那么在完成拖放定制之前,首先要说的就是动态组件。使用Vue2时,相信大家都不陌生,可以按组件is动态介绍,比如:

  模板

  div class=组件框

  组件:is=xxx/

  /div

  /模板

  脚本

  从“xxx.vue”导入xxx

  导出默认值{

  data(){

  返回{

  }

  },

  组件:{

  xxx

  }

  }

  /脚本

  其中is的值是我们在components中注册的组件,这样就可以完成动态组件的注入。在Vue3呢?特别是当使用设置语法糖时,我们不能通过这样做来识别组件。这是因为我们可以直接将组件引入到设置语法sugar中并使用它们,而无需在组件中注册它们(默认情况下已经为我们完成了)。因此,实际上,在我们真实业务场景的背景中返回给我们的数据是这样的格式:

  因此,我们的动态组件也需要调整:

  “组件框”v-for=“XXX中的元素”

  组件:is= element . name :key= element . name /

  /div

  此时,我们的is绑定不是一个组件的实例,实际上是一个字符串。因此,将会生成一个错误,页面将无法正常加载我们的组件。那么我们该怎么办呢?Silly在网上做了调查。有三种方式:

  

方法一

  组件的动态加载由Vue3的defineAsyncComponent方法完成,成为实例对象。

  从“vue”导入{ defineAsyncComponent,ref }

  //需要加载的组件的集合

  const components=ref(新映射字符串,any())

  components.value.set(

  测试1 ,

  defineAsyncComponent(()=import(。/test1.vue ))

  )

  components.value.set(

  测试2 ,

  defineAsyncComponent(()=import(。/test2.vue ))

  )

  这样,当我们获取值时,就可以通过get方法传入特定的字符串来获取相应的组件。

  

方法二

  这由shallowRef或markRaw表示。shallowRef是一个浅代理,只表示一个层,markRaw标记这个属性永远不会有响应。

  从“vue”导入{ shallowRef,ref }

  从导入test1。/test1.vue

  从导入test2。/test2.vue

  //这里用ref的话说,vue给出了一个警告,Vue收到了一个组件,这个组件被做成一个响应对象。这可能会导致不必要的性能开销,应该通过将组件标记为“markRaw”或使用“shallowRef”而不是“Ref”来避免。

  //如果使用markRaw,那么currentComp就再也不是一个响应对象了。所以我们必须使用shallowRef。

  设currentComp=shallowRef(test1)

  currentComp.value

  //开关组件

  const changeComp=()={

  if(currentComp.value==test1) {

  currentComp.value=test2

  }否则{

  currentComp.value=test1

  }

  }

  这个方法可行,但是不能传入字符串进行动态引入。

  

方案三

  使用双脚本标签的完美解决方案

  脚本语言

  导入{

  测试1,

  测试2,

  }来自。/组件/DragComponents

  导出默认值{

  组件:{

  测试1,

  测试2,

  }

  }

  /脚本

  脚本安装语言=ts

  const componentList=reactive([

  {

  名称:“测试1”,

  标题:“测试1”,

  id:“1”

  },

  {

  名称:“测试2”,

  标题:“测试2”,

  id:“2”

  }

  ])

  /脚本

  所以我们可以直接获取后台数据进行处理。

  

最终实现结果

  最终通过不断的爬坑达到了拖的效果。目前已经完成了水平和垂直两个方向的布局,需要扩展的是宽度和高度可以定制。有兴趣可以留言,我们可以一起交流。有兴趣的可以克隆一下试试。

  

总结

  关于使用Vue3拖拽定制主页的这篇文章到此为止。更多相关Vue3拖拽定制主页内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: