vue2项目迁移到vue3中的改动——基础积累

最近在跟着大神学习vue3的内容,发现之前vue2写的代码可以直接照搬到vue3中,但是有一些需要改动的内容,下面做一下记录。
在这里插入图片描述

1.定义对象时,需要指定每个属性值

例如:listQuery:{} 如果使用:listQuery.Filter 会报错提示,listQuery对象上没有Filter参数。因此定义listQuery:{Filter:null};

2.监听input组件的回车事件

vue2的写法:@keyup.enter.native
vue3的写法:@keyup.enter
报错信息:
[vue/no-deprecated-v-on-native-modifier] '.native' modifier on 'v-on' directive is deprecated.

3.input组件中的图标

vue2的写法:<a-icon slot="prefix" type="search" />
vue3的写法:

<template #prefix>
  <search-outlined />
</template>

4.button组件中的图标

vue2的版本

<a-button type="primary" icon="search" @click="handleFilter">查询</a-button>

vue3的版本:

<a-button type="primary" @click="handleFilter">
  <template #icon>
    <search-outlined />
  </template>
  查询</a-button>

5.alert组件的使用

<a-alert type="warning" style="margin-top: 5px" showIcon>
  <template #message>
    <div style="display: flex; justify-content: space-between; align-items: center">
      <span
        >已选择<b style="margin:0 5px;">{{ checkedIds.length }}</b
        ></span
      >
      <span @click="checkedIds = []" style="cursor: pointer;">清空</span>
    </div>
  </template>
</a-alert>

6.插槽的使用

使用插槽需要用`template`标签,然后内容为`#插槽名称`的方式来处理

例如上面的:

<template #prefix>
  <search-outlined />
</template>
<template #icon>
  <search-outlined />
</template>

7.table组件的部分使用——后续更新

7.1 columns列数据的渲染

<template #bodyCell="{ column, record }">
  <div v-if="column.dataIndex == 'action'">
    //需要通过 #bodyCell的方式来处理,然后通过v-if="column.dataIndex==xx"的方式来渲染不同的列
  </div>
</template>

7.2 a-dropdown组件的使用

<a-dropdown>
 <a class="ant-dropdown-link" href="javascript:;">
    操作
    <a-icon type="down" />
  </a>
  <template #overlay>
    <a-menu>
      <a-menu-item>
        <a-popconfirm title="确定要删除吗?" @confirm="handleDelRole(record.id)">
          <a href="javascript:;">删除</a>
        </a-popconfirm>
      </a-menu-item>
       <a-menu-item>
        <a href="javascript:;" @click="handleAdd(record)">添加</a>
      </a-menu-item>
    </a-menu>
  </template>
</a-dropdown>

7.3 如果在7.2中的代码中添加事件时,不能直接使用$refs.xxx.open(record)的方式来处理

例如上面中的@click="handleAdd(record)",不能使用@click="$refs.xxx.open(record)",会报错提示xxx为undefined,且无open的方法function

7.4 表格的选择row-selection

vue3的表格选择:

<a-table
 style="margin-top: 5px"
  rowKey="id"
  :columns="memberColumns"
  :dataSource="data"
  @change="handleTableChange"
  :pagination="pagination"
  :customRow="onCustomRow"
  :row-selection="{ selectedRowKeys: checkedIds, onChange: onSelectedRowChange }"
>
</a-table>

对应的script

onSelectedRowChange(selectedRowKeys) {
  this.checkedIds = selectedRowKeys;
},

点击行方法vue2vue3的区别:
vue2的写法:

onCustomRow(record) {
  return {
    on: {
      click: (event) => {
      }, // 点击行
    },
  };
},

vue3的写法:

onCustomRow(record) {
  return {
    onclick: () => {
      ///
    },
  };
},

8.form组件

8.1 formform-model合并了,目前只有form

<a-form :model="form" :rules="rules" @finish="handleOk" :label-col="labelCol" :wrapper-col="wrapperCol">
  <a-form-item label="名称" ref="displayName" name="displayName">
    <a-input v-model:value="form.displayName" placeholder="请输入机构名称" />
  </a-form-item>
  <a-form-item style="text-align: right" :label-col="{ span: 0 }" :wrapper-col="{ span: 24 }">
    <a-space>
      <a-button type="primary" ghost @click="handleCancel">取消</a-button>
      <a-button type="primary" html-type="submit">确定</a-button>
    </a-space>
  </a-form-item>
</a-form>

8.2 触发校验的只能是@finish方法,且需要html-type="submit"的按钮才能触发

8.3 prop改为name,否则无法触发rules

8.4 v-model统一改为v-model:value

8.5 finish方法

this.confirmLoading = true;
//调用自己的方法:
createUpdate(this.form)
.then(() => {
  this.visible = false;
  this.$message.success('操作成功');
  this.$emit('ok');//子组件触发父组件的ok方法。
})
.finally(() => {
  this.confirmLoading = false;
});

8.5 清空校验:

vue2的用法:使用clearValidate方法,但是vue3使用这个,则需要在setup中,而且我没有测试成功,因为我这边地方是弹窗,因此我通过设置a-modal中的destroyOnClosefalse,也就是要强制销毁组件,则再次打开弹窗时,则不会有上一次的规则校验了。
在这里插入图片描述

9.modal组件的使用

我想要去掉a-modalfooter部分:
在这里插入图片描述
百度了很久,才发现一个可用的办法:
在此处附上大神的链接:vue3.0修改antdesginVue中对话框组件(<a-modal>)的头部样式http://t.csdn.cn/65e7L

步骤如下:

9.1 在外层套一个div,添加一个class属性,一个ref属性

9.2 在a-modal中添加 :getContainer="() => $refs.ruleFormRef"

9.3 去掉底部的样式,则先去掉按钮

<template #footer>
  <span></span>
</template>

9.4 css样式部分:

<style scoped>
  .tenantFormModalCls :deep.ant-modal-footer {
    padding: 0 !important;
  }
</style>

9.5 完整代码如下:

<div ref="ruleFormRef" class="tenantFormModalCls">
  <a-modal
    :title="form.id ? '编辑' : '添加根机构'"
    :width="640"
    :visible="visible"
    :confirmLoading="confirmLoading"
    @cancel="handleCancel"
    :destroyOnClose="true"
    :getContainer="() => $refs.ruleFormRef"
  >
    <a-spin :spinning="confirmLoading">
      <a-form :model="form" :rules="rules" @finish="handleOk" :label-col="labelCol" :wrapper-col="wrapperCol">
        <a-form-item label="名称" ref="displayName" name="displayName">
          <a-input v-model:value="form.displayName" placeholder="请输入机构名称" />
        </a-form-item>
        <a-form-item style="text-align: right" :label-col="{ span: 0 }" :wrapper-col="{ span: 24 }">
          <a-space>
            <a-button type="primary" ghost @click="handleCancel">取消</a-button>
            <a-button type="primary" html-type="submit">确定</a-button>
          </a-space>
        </a-form-item>
      </a-form>
    </a-spin>
    <template #footer>
      <span></span>
    </template>
  </a-modal>
</div>

先这些吧,后续会持续更新!!!
多多积累,多多收获!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/43792.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

chrome查看浏览器内核日志

由于经常在网页上调试播放音视频&#xff0c;但是总遇到一些未知原因&#xff0c;导致无法正常播放&#xff0c;亟需查看浏览器内核日志&#xff0c;分析原因&#xff0c;做一下笔记。 (1) 查看浏览器快捷键属性 &#xff08;2&#xff09;在快捷键启动位置补充参数 --enable-…

LabVIEW可重入VI,VI模板和动态VI之间的差异

LabVIEW可重入VI&#xff0c;VI模板和动态VI之间的差异 应该在何时使用可重入VI、模板VI和动态调用VI&#xff1f;这三种类型之间有什么区别&#xff1f; 可重入VI 当想要同时运行同一VI的多个实例时&#xff0c;将使用可重入VI。当VI不可重入时&#xff0c;VI只有一个数据空…

opencv对相机进行畸变矫正,及从矫正后的图像坐标反求原来的对应坐标

1.背景 目前有个项目&#xff0c;需要用到热成像相机。但是这个热成像相机它的畸变比较厉害&#xff0c;因此需要用标定板进行标定&#xff0c;从而消除镜头畸变。 同时需要实现用户用鼠标点击矫正后的画面后&#xff0c;显示用户点击位置的像素所代表的温度。 2.难点 消除镜…

11 spring-boot的MVC配置原理

11.1 spring-boot为MVC提供的自动配置 1.ContentNegotiatingViewResolver视图解析器&#xff1b; 2.静态资源或者支持WebJars&#xff1b; 3.自动注册类型转换器&#xff1a;比如说前台提交user的字段&#xff0c;后台自动封装的意思&#xff1b; 4.HttpMessageConverters&…

「苹果安卓」手机搜狗输入法怎么调整字体大小及键盘高度?

手机搜狗输入法怎么调整字体大小及键盘高度&#xff1f; 1、在手机上准备输入文字&#xff0c;调起使用的搜狗输入法手机键盘&#xff1b; 2、点击搜狗输入法键盘左侧的图标&#xff0c;进入更多功能管理&#xff1b; 3、在搜狗输入法更多功能管理内找到定制工具栏&#xff0c…

100天精通Golang(基础入门篇)——第17天:深入解析Go语言中的指针

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

【MySQL】数据库基础

目录 一、什么是数据库 二、主流数据库 三、基本使用 3.1MySQL安装 3.2连接服务器 3.3服务器管理 3.4服务器&#xff0c;数据库&#xff0c;表关系 3.5使用案例 3.6数据逻辑存储 四、MySQL架构 五、SQL分类 六、存储引擎 6.1存储引擎 6.2查看存储引擎 6.3 存储引…

数学随想:轻量级算法服务。

数学随想&#xff1a;轻量级算法服务TOC 通常认为&#xff0c;数列是算法服务的基础。但是&#xff0c;真正用于算法服务的数列只有几个众所周知的基础数列。虽然对于不同的任务可以选择使用数列的一段用于服务&#xff0c;但是数列的使用还是复杂而繁重的。特别是在计算应用日…

Github上方导航栏介绍

Code Watch&#xff1a;相当于关注&#xff0c;到时候这个项目又有什么操作&#xff0c;就会以通知的形式提醒你。 Fork&#xff1a;也就是把这个项目拉到你的仓库里&#xff0c;之后你可以对该代码进行修改&#xff0c;之后你可以发起Pull Request&#xff0c;简称PR&#xf…

《数据分析-JiMuReport08》JiMuReport报表开发-报表列数量开发限制调整

JiMuReport报表开发列数量限制调整 1.开发列数限制 JiMuReport报表在开发的时候&#xff0c;需要100-200列的数据&#xff0c;但是在设计到一定数量的时候&#xff0c;水平下拉框就不能滑动了 2.报表参数调整 col: n 在application.yml文件的jmreport配置处&#xff0c;如果想…

【指针和数组笔试题(2)】详解指针、数组笔试题

文章目录 前言第一组题第二组题第三组题二维数组&#xff08;难点&#xff09;总结 前言 来到第二章&#xff0c;继续学习指针和数组笔试题 第一组题 #include<stdio.h> int main() {char arr[] "abcdef";//里面的放的是[a b c d e f \0]printf("%d\n&…

LeetCode45.Jump-Game-II<跳跃游戏II>

题目&#xff1a; 思路&#xff1a; 从上次大神那里获得的灵感 这题问的是次数,那么我们需要确保 1,能否跳到终点 2,得到次数. 第一次条获得的是nums[0],那么第一个数就是我们第一次能跳跃的范围.每次在范围里获得最大值.并且次数加一.然后进入下一次范围;即可得到次数; 代码…

Redis源码篇 - inset数据结构

inset是Redis中set类型的一种底层存储结构&#xff08;编码&#xff09;&#xff0c;它是基于整数数组来实现的&#xff0c;用于存储数值类型set集合数据&#xff0c;并具备长度可变、有序等特征。 有序性 为了方便查找&#xff0c;Redis会将intset中整数数据按照从小到大的顺…

电商系统架构设计系列(六):电商的「账户系统」设计要特别考虑哪些问题?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;电商的账户系统&#xff0c;该如何设计&#xff1f; 今天这篇文章&#xff0c;我们来说一下电商的账户系统。 引言 账户系统负责记录和管理用户账户的余额&#xff0c;这个余额就是每个用户临时存在电商的钱&#xff…

Jenkins从配置到实战(二) - Jenkins如何在多台机器上自动化构建

前言 jenkins除了支持在本机上进行项目构建&#xff0c;还可以将构建任务分发到其他远程服务器上去执行&#xff0c;可以实现在不同平台和架构的机器上来完成项目的自动化构建任务&#xff0c;也能减轻jenkins服务器的压力。本文章就主要介绍下此流程。 准备工作 准备两台机…

LeetCode[剑指Offer51]数组中的逆序对

难度&#xff1a;Hard 题目&#xff1a; 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5 限制&#xff1a; 0 < 数组…

Unity进阶--声音管理器学习笔记

文章目录 声音管理器 using System.Collections; using System.Collections.Generic; using UnityEngine;public class AudioManager : MyrSingletonBase<AudioManager> {//环境音private AudioSource enPlayer;//音效private AudioSource sePlayer;//音乐private Audio…

欧姆龙CX系列PLC串口转以太网欧姆龙cp1hplc以太网连接电脑

你是否还在为工厂设备信息采集困难而烦恼&#xff1f;捷米特JM-ETH-CX转以太网通讯处理器为你解决这个问题&#xff01; 捷米特JM-ETH-CX转以太网通讯处理器专门为满足工厂设备信息化需求而设计&#xff0c;可以用于欧姆龙多个系列PLC的太网数据采集&#xff0c;非常方便构建生…

Centos7:Flask-Apache部署

系列文章目录 RHCE第0章&#xff1a;RHCE开始前的准备 RHCE第1章&#xff1a;Web服务器&#xff08;上&#xff09; RHCE第1章&#xff1a;Web服务器&#xff08;下&#xff09; RHCE第2章&#xff1a;DNS服务 RHCE第3章&#xff1a;DHCP服务器 RHCE第4章&#xff1a;Firewall…

VMware Fusion 14 Tech Preview - 适用于 Arm 的 Windows 11 上的全面 3D 加速

VMware Fusion 14 Tech Preview - 适用于 Arm 的 Windows 11 上的全面 3D 加速 VMware Fusion Tech Preview 2023 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-fusion-14/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;…