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

由vue2版本升级vue3版本遇到的问题

一、vuedraggable

由vue2版本升级vue3版本后,可能会遇到以下几种bug:
1、vue3+vuedraggable报错TypeError: Cannot read properties of undefined (reading ‘updated’):这个一般是因为插件使用语法有问题,vue3版本的插件使用时,v-for不能
自己手写,由插件提供的语法实现循环:

<draggable v-model="configDataArr"><template #item="{element,index}"></template></draggable>

以上是插件最简几行代码,这四行不能缺失。

2、报错 draggable element must have an item slot:这报错也是因为没有写item插槽,按照上面的语法写了插槽后,这报错就能解决。
3、报错Item slot must have only one child:这是由于item插槽下有多个元素,应该只有一个div。哪怕是注释的div也会报错

 <draggable v-model="configDataArr"><template #item="{element,index}"><!--          {{element}}--><div>{{element}}</div></template></draggable>

正确写法

 <draggable v-model="configDataArr"><template #item="{element,index}"><div>//这里可以随意写{{element}}</div></template></draggable>

4. 切记注意,这个单词是不可以修改的,必须是element,不然无法识别(坑大了)

如果要命别名可以这样写:

 <draggable v-model="configDataArr"><template #item="{element:item,index}"><div>//这里可以随意写{{element}}</div></template></draggable>

二、icon不显示问题

本来以为在main.js文件这么导入了就可以全局使用

import * as ElementPlusIconsVue from '@element-plus/icons-vue'
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component('ElIcon' + key, component)
}

结果发现icon只有使用SVG-content 的时候才显示,而且显示的非常大

而且很长一串,想了一下还得用icon-code方便简洁

然后就在vue文件内直接导入该组件了然后可以了
用什么引入什么就行

import {Plus} from '@element-plus/icons-vue'
export default {components: {
Plus
}
<el-icon><Plus /></el-icon>

三、vue父子组件之间双向数据绑定的三种方式(vue2/vue3)

我从vue2项目搬入富文本功能到vue3中时,发现富文本中的数据没有传入到父组件的数据中:

原本写法:

父组件:

<Editorv-model="selEle.attribute.mzContent"height="450"></Editor>

Editor为富文本子组件

const html = this.$refs.editor.children[0].innerHTML;this.$emit("update:mzContent", html);//<p>111</p>

问题出在了子组件传参给父组件

然后根据这篇文章找到了解决办法:vue父子组件之间双向数据绑定的三种方式(vue2/vue3)_子组件从父子组件之间双向数据同步-CSDN博客

 vue3取消了.sync这种语法,使用v-model:title 语法代替

// 父组件
<template><div>我是父子组件之间同步的数据{{data}}
// 父组件传递给子组件title属性(默认使用value)
// 通过update:title(默认使用update:value) 方法将子组件传递的值赋值给data<child v-model:title = data></child></div>
</template>
<script>data(){return {data:'我是来自父组件的数据'}}
</script>
//子组件
<template><div><button @input="childDataChange">{{title}}</button></div>
</template><script>props:{title:{default:'',type:String}},methods:{childDataChange(v){this.$emit('update:title',v) // 触发update:data将子组件值传递给父组件}}
</script>

然后我的写法:

<Editorv-model:mzContent="selEle.attribute.mzContent"height="450"
></Editor>

子组件

 this.$emit("update:mzContent", html);

成功传值

http://www.lryc.cn/news/325567.html

相关文章:

  • 数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting
  • 24考研数学炸了,给25考研人的启示
  • 嵌入式学习第三十天!(单向链表练习)
  • Linux:rpm部署Jenkins(1)
  • 新能源汽车充电桩站点烟火AI识别检测算法应用方案
  • Macbook安装Go以及镜像设置
  • 群晖NAS安装Video Station结合内网穿透实现公网访问本地影音文件
  • GitHub加速访问最简单的方法
  • MySQL数据库索引介绍
  • 中间件学习--InfluxDB部署(docker)及springboot代码集成实例
  • Go第三方框架--gin框架(一)
  • 网络安全——笔记
  • Maven pom.xml配置详解
  • 2024深圳国际电线电缆及电源产品展览会
  • 如何成功将自己开发的APP上架到应用商店
  • Jetson AGX ORIN 配置 FGVC-PIM 神经网络(包含 arm64 下面 torch 和 torchvision 配置内容)
  • mybatisplus和mybatis兼容问题
  • nodejs安装使用React
  • 防御性编程,可能是导致被裁员的更大的原因,别被误导了
  • Unity与鼠标相关的事件(自己记忆用)
  • 模型权重下载方法
  • JS基础之 数据浅拷贝与深拷贝
  • FFmpeg开发笔记(十四)音频重采样的缓存
  • 详解Python面向对象编程(一)
  • 一文带你完整了解Go语言IO基础库
  • Java基于微信小程序的校园请假系统
  • Expert Prompting-引导LLM成为杰出专家
  • Element-Plus下拉菜单边框去除教程
  • 免费redis可视化工具windows/mac都可以使用,开源免费
  • PHPCMS v9城市分站插件