广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >利用Vue3实现拖拽定制化首页功能
  • 799
分享到

利用Vue3实现拖拽定制化首页功能

2024-04-02 19:04:59 799人浏览 八月长安
摘要

目录前期准备开始方法一方法二方案三最终实现结果总结前期准备 vue3TsVueDragable (4版本以上)期望 拖拽组件 组件可以按需加载导入 开始 首先呢,我们先看下VueDr

前期准备

  • vue3
  • Ts
  • VueDragable (4版本以上)
  • 期望 拖拽组件 组件可以按需加载导入

开始

首先呢,我们先看下VueDragable的文档效果

文档的效果是这种基于列表的一个拖拽排序,那么回归到我们期望我们是想通过动态引入组件来进行拖拽排序,那么在完成拖拽定制化之前,首先要讲的是动态组件,在使用Vue2时候相信我们不陌生我们可以通过Component is来动态引入,如:

<template>
  <div class="component-box">
     <component :is="xxx""/>          
  </div>
</template>
<script>
import xxx from 'xxx.vue'
export default{
    data(){
        return{

        }
    },
    components:{
        xxx
    }
}
</script>

其中is的值就是我们在components中注册的组件,这样就能完成动态组件的注入,那么在Vue3中呢?尤其是在setup语法糖使用时候我们这样做就会导致无法识别组件,这是因为setup语法糖中我们可以直接引入组件后使用,并不需要通过在components中注册(默认帮我们完成了),那么我们真实的业务场景其实后台返给我们的数据是这个格式的:

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

<div class="component-box" v-for="element in xxx">
  <component :is="element.name" :key="element.name"/>
</div>

这时候我们的is绑定就并非一个组件的实例了,其实是一个字符串,如此一来,就会产生错误并且导致页面无法正常加载我们的组件,那么该怎么办呢?大傻在网上做了调研,有三种方法:

方法一

通过Vue3的defineAsyncComponent方法去完成动态加载组件,使其成为一个实例对象。

import { defineAsyncComponent, ref } from 'vue'
// 需要加载的组件集合
const components = ref(new Map<string, any>())
components.value.set(
  'test1',
  defineAsyncComponent(() => import('./test1.vue'))
)
components.value.set(
  'test2',
  defineAsyncComponent(() => import('./test2.vue'))
)

这样我们在取值时候可以通过get方法传入具体字符串拿到对应的组件

方法二

这个则是通过shallowRef 或者 markRaw 来进行代理,shallowRef是浅层代理,只去代理一层,而markRaw则是标记该属性永远不为响应式

import { shallowRef, ref } from 'vue'
  import test1 from './test1.vue'
  import test2 from './test2.vue'
 
  //这里用ref的话,vue给出警告Vue接收到一个组件,该组件被制成响应对象。这可能会导致不必要的性能开销,应该通过将组件标记为“markRaw”或使用“shallowRef”而不是“ref”来避免。
  
  // 如果使用 markRaw 那么currentComp将不永远不会再成为响应式对象。 所以得使用 shallowRef
  let currentComp = shallowRef(test1)  
 currentComp.value
  // 切换组件
  const changeComp = () => {
    if(currentComp.value == test1) {
      currentComp.value = test2
    }else {
      currentComp.value = test1
    }
  }

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

方案三

双script标签完美解决

<script lang="ts">
import {
  Test1,
  Test2,
} from './components/DraGComponents'

export default {
  components: {
    Test1,
    Test2,
  }
}
</script>
<script setup lang="ts">
const componentList = Reactive([
  {
    name: 'Test1',
    title: '测试1',
    id: '1'
  },
  {
    name: 'Test2',
    title: '测试2',
    id: '2'
  }
])
</script>

这样我们可以直接去拿到后台数据进行处理。

最终实现结果

大傻最终呢,也是通过不断地爬坑去实现了这个拖拽效果,目前完成了横纵方向两种布局,待拓展的也就是,可定制宽高等等这些内容。有兴趣可以留言,大家一起交流。感兴趣的可以克隆下来试一试

总结

到此这篇关于利用Vue3实现拖拽定制化首页功能的文章就介绍到这了,更多相关Vue3拖拽定制化首页内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用Vue3实现拖拽定制化首页功能

本文链接: https://www.lsjlt.com/news/148162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用Vue3实现拖拽定制化首页功能
    目录前期准备开始方法一方法二方案三最终实现结果总结前期准备 Vue3TsVueDragable (4版本以上)期望 拖拽组件 组件可以按需加载导入 开始 首先呢,我们先看下VueDr...
    99+
    2022-11-13
  • vue3使用vuedraggable实现拖拽功能
    本文实例为大家分享了vue3使用vuedraggable实现拖拽功能的具体代码,供大家参考,具体内容如下 1、npm i vuedraggable -S,使用这个命令,vue3会报错...
    99+
    2022-11-13
  • vue3怎么使用vuedraggable实现拖拽功能
    这篇文章主要介绍了vue3怎么使用vuedraggable实现拖拽功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue3怎么使用vuedraggable实现拖拽功能文章都会有所收获,下面我们一起来看看吧。n...
    99+
    2023-06-29
  • vue3使用自定义指令实现eldialog拖拽功能示例详解
    目录实现el-dialog的拖拽功能通过自定义指令实现拖拽功能实现拖拽功能使用方式实现el-dialog的拖拽功能 这里指的是 element-plus 的el-dialog组件,一...
    99+
    2022-11-13
  • Qt利用QDrag实现拖拽拼图功能详解
    目录一、项目介绍二、项目基本配置三、UI界面设置四、主程序实现4.1 main.cpp4.1 mainwindow.h头文件4.2 mainwindow.cpp源文件4.3 Piec...
    99+
    2022-11-13
  • 怎么利用Vue实现拖拽穿梭框功能
    今天小编给大家分享一下怎么利用Vue实现拖拽穿梭框功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、使用原生js实现拖拽...
    99+
    2023-07-04
  • 怎么使用Vue3实现一个飘逸元素拖拽功能
    这篇文章主要介绍了怎么使用Vue3实现一个飘逸元素拖拽功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Vue3实现一个飘逸元素拖拽功能文章都会有所收获,下面我们一起来看看吧。进入正题元素拖拽是一个比较...
    99+
    2023-07-06
  • 如何使用Vue3实现一个飘逸元素拖拽功能
    这篇文章主要介绍了如何使用Vue3实现一个飘逸元素拖拽功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Vue3实现一个飘逸元素拖拽功能文章都会有所收获,下面我们一起来看看吧。推荐几个好用的工具var-...
    99+
    2023-07-05
  • Android利用RecyclerView实现全选、置顶和拖拽功能示例
    前言今天给大家分享是如何在RecyclerView实现全选,ItemTouchHelper实现侧滑删除,拖拽功能。比较基础。关于RecyclerView的强大,就不多说了。在Android L SDK发布的新API中最有意思的就是Recyc...
    99+
    2023-05-31
    recyclerview 全选 拖拽
  • 利用vue组件实现图片的拖拽和缩放功能
    目录前言如图所示:方法如下:总结前言 vue实现一个组件其实很简单但是要写出一个好的可复用的组件那就需要多学习和钻研一下,一个好的组件必须有其必不可少的有优点:一是能提高应用开发效率...
    99+
    2022-11-13
  • 怎么在HTML5中利用拖拽功能实现拼图游戏
    本篇文章为大家展示了怎么在HTML5中利用拖拽功能实现拼图游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。<!--代码如下,最下面给出了我测试用的9张250*250的图片切片-->&l...
    99+
    2023-06-09
  • 手把手教你使用Vue3实现一个飘逸元素拖拽功能
    怎么实现元素拖拽功能?下面本篇文章一步步带大家了解如何使用Vue3实现一个飘逸元素拖拽功能,并在实例中了解相关知识点,希望对大家有所帮助!推荐几个好用的工具var-conv 适用于VSCode IDE的代码变量名称快速转换工具generat...
    99+
    2023-05-14
    前端 Vue.js
  • 使用vue自定义如何实现Tree组件和拖拽功能
    目录vue自定义实现Tree组件和拖拽功能vue2 + js版vue2 + ts 版总结vue自定义实现Tree组件和拖拽功能 实现功能:树结构、右键菜单、拖拽 效果图 vue2 ...
    99+
    2022-12-09
    vue自定义Tree组件 vue Tree组件 vue拖拽功能
  • 怎么利用vue组件实现图片的拖拽和缩放功能
    这篇文章将为大家详细讲解有关怎么利用vue组件实现图片的拖拽和缩放功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言vue实现一个组件其实很简单但是要写出一个好的可复用的组件那就需要多学...
    99+
    2023-06-26
  • 怎么在android应用中利用view实现一个拖拽删除功能
    这期内容当中小编将会给大家带来有关怎么在android应用中利用view实现一个拖拽删除功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。功能有以下几个特点:在开始的时候点击圆以外的区域不会触发拖动事件点...
    99+
    2023-05-31
    android roi view
  • 怎么在Java中利用dropzone.js实现一个文件拖拽上传功能
    本篇文章为大家展示了怎么在Java中利用dropzone.js实现一个文件拖拽上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。jsp页面: 首先必须引入dropzone的js和css文件<...
    99+
    2023-05-31
    java dropzone.js ava
  • 利用JavaScript怎么实现一个拖拽鼠标调整div大小的功能
    本篇文章为大家展示了利用JavaScript怎么实现一个拖拽鼠标调整div大小的功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向...
    99+
    2023-06-07
  • 利用vue怎么实现一个桌面向网页拖动文件的功能
    本文章向大家介绍利用vue怎么实现一个桌面向网页拖动文件的功能的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。vue是什么软件Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区...
    99+
    2023-06-06
  • Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例
    本文实例讲述了Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能的方法。分享给大家供大家参考,具体如下: 1、布局界面 <RelativeLa...
    99+
    2022-06-06
    自动 自定义 自定义控件 android开发 多线程 线程 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作