element-plus坑总结

news2025/1/10 3:25:34

reactive和ref对比

在这里插入图片描述

// 定义变量
import { reactive } from 'vue';
const person = reactive({
  name: "John",
  age: 25,
});

// 赋值修改
person.name = "Tom";
person.age = 26;

// 使用变量
<div>{{ person.name }}</div>
<button @click="person.age++">Increase Age</button>

console.log(person.name); // 输出当前名称
person.age++; // 增加年龄

// 使用toRefs
let { name, age} = toRefs(person)
<div>{{ name }}</div>
console.log(name.value); // 输出当前名称
// 定义变量
import { ref } from 'vue';
const name = ref("John");
const age = ref(25);

// 赋值修改
name.value = "Tom";
age.value = 26;

// 使用变量
<div>{{ name }}</div>
<button @click="age++">Increase Age</button>

console.log(name.value); // 输出当前名称
age.value++; // 增加年龄

form表单inline横向布局时,input加了clearable属性后,鼠标移入输入内容宽度会发生变化,失去焦点恢复原始宽度

  • 原因:el-input是没有宽度的,实际渲染出来的 el-input宽度 = 原生input宽度 + 前缀图标宽度 + 后缀图标宽度
  • 解决:input 的 width设置为215px,刚好等于select框
<el-input v-model="formInline.user" placeholder="Approved" clearable style="width:215px" />

button 默认是middle,但是比vue2的大很多

  • ruoyi.scss 覆盖样式
 .el-button--middle,
 .el-button--default {
 	height: 28px;
 	font-size: 12px;
 }

form表单重置,必须在form-item上添加props属性,否则不起作用

table数据赋值,视图不更新

问题原因
tableData不是代理对象,使用直接将新的值赋给tableData,视图不会更新
后来将table定义为代理对象,还是失败的原因是数组的改变有些情况vue3响应监测不到
vue3 使用proxy,对于对象和数组都不能直接整个赋值

失败案例:获取接口数据赋值给列表arr

const arr = reactive([]); 
const load = (res) => {
  arr = res; // 方法1 失败,直接赋值丢失了响应性
  arr.concat(res); // 方法2 这样也是失败
};

解决方法:成功案例

// 方案1:创建一个响应式对象,对象的属性是数组
const data = reactive({
    arr: []
});
data.arr = res

// 方案2: 使用ref函数定义
const arr= ref([])
arr.value = res

// 方案3: 使用数组的push方法
const arr = reactive([])
arr.push(...res)

数组对象的TS写法——继上述成功案例

  • 方案1:创建一个响应式对象,对象的属性是数组
interface List {
  date: string,
  name: string,
  address: string
}
interface Table {
  tableData: List[]
}
let table: Table = reactive({
  tableData: []
})
let getList = (data) => {
	table.tableData = data
}
  • 方案2: 使用ref函数定义
interface List {
  date: string,
  name: string,
  address: string
}
// const userList = ref<any>();
let userList = ref<List[]>([]) 
let getList = (data) => {
	userList.value = data
}
  • 方案3: 使用数组的push方法
interface List {
  date: string,
  name: string,
  address: string
}
let tableData: List[] = reactive([])
let getList = (data) => {
	tableData.push(...data)
}

使用reactive定义的数组,使用push之后,原来push的内容都会变为最后一次的数据

原因
因为push的并不是一个值,而是一个地址,数组都指向同一个地址
每一次push就等同于改变了数组的地址,所以会导致每次都变成了最后push的内容。

解决方法:将push的内容深拷贝一份再push

let table: Table = reactive({
  tableData: []
})
let add = ()=>{
	table.tableData.push(JSON.parse(
	   JSON.stringify(addForm)
	))
}

总结:reactive及接口使用场景

interface Option {
	username: string;
	phone: string;
}
interface Op {
	visible: boolean;
	user: Option[];
}
let addOption: Op = reactive({
	visible: false,
	user: [
		{
			username: "",
			phone: "",
		},
	],
});

?的使用

在这里插入图片描述

对于props的类型定义

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

layui介绍以及登录功能的实现

一. layui简介 1.1 layui介绍 Layui 是一套开源免费的 Web UI 组件库&#xff0c;采用自身轻量级模块化规范&#xff0c;遵循原生态的 HTML/CSS/JavaScript 开发模式&#xff0c;非常适合网页界面的快速构建。Layui 区别于一众主流的前端框架&#xff0c;它更多是面向于后端开…

3、Linux-进程管理类

进程管理类 进程是正在执行的一个程序或命令&#xff0c;每一个进程都是一个运行的实体&#xff0c;都有自己的地址空间&#xff0c;并占用一定的系统资源。 7.10.1 ps 查看当前系统进程状态 ps:process status 进程状态 1&#xff09;基本语法 ps aux | grep xxx &#xff08…

Python 导入引用其他文件的函数(持续更新)

文章目录 构造初始化文件结构&#xff0c;以此为例。【1】导入同目录且同级下其他文件的函数&#xff08;c.py文件导入d.py文件的函数&#xff09;&#xff08;1&#xff09;只引入d.py文件&#xff08;2&#xff09;直接引入函数&#xff08;3&#xff09;引入全部函数 【2】导…

docker服务启动过程分析

How docker.service start&#xff1f; just by ref 我们先了解docker的各个核心组件的介绍 runc&#xff1a;runc实现了容器的底层功能&#xff0c;例如创建、运行等。runc通过调用内核接口为容器创建和管理cgroup、namespace等Linux内核功能&#xff0c;来实现容器的核心特…

Spring5学习笔记--详细一文通

Spring5学习笔记--详细一文通 1 Spring 框架概述1.1 Spring 5 简述1.2 Spring5入门案例1.2.1 Spring5下载1.1.2 打开 idea 工具&#xff0c;创建普通 Java 工程1.2.3 导入 Spring5 相关 jar 包1.2.4 创建普通类&#xff0c;在这个类创建普通方法1.2.5 创建 Spring 配置文件&…

同时多项目多个node版本-比nvm好用的volta

一、node版本问题场景&#xff1a; 1、服务器上跑的多个node项目需要不同的node版本&#xff0c;且没条件上docker。 2、开发环境中多个项目需要node版本不同&#xff0c;且同时不止是一个项目在开发中&#xff0c;用了nvm进行node版本管理和切换&#xff0c;但是太麻烦。 二…

如何开发一款软件?

创建软件的步骤 1. 头脑风暴 创意生成是制作应用程序的第一步。考虑这个问题的最好方法是将你的应用想象成解决问题。 你自己的经历可以成为灵感的重要来源。试着想想你面临的问题&#xff0c;无论是软件和计算机&#xff0c;还是你的一般生活。很有可能&#xff0c;你面临的…

3DVR全景乡村振兴创新展示,助力数字化乡村建设

导语&#xff1a; 随着社会进步和科技发展&#xff0c;3D虚拟现实&#xff08;VR&#xff09;全景技术在乡村振兴领域展现出巨大的潜力和创新空间。通过结合3DVR全景技术和乡村振兴理念&#xff0c;我们可以为乡村带来全新的展示方式和体验&#xff0c;推动乡村振兴的进程。本…

MiniGPT4 在RTX-3090 Ubuntu服务器部署步骤详解

主要参考知乎帖子&#xff1a; MiniGPT-4 本地部署 RTX 3090 - 知乎 MiniGPT-4部署比麻烦&#xff0c;首先需要获取LLaMA权重&#xff0c;并结合Vicuna的bitwise XOR增量文件完成Vicuna模型权重生成&#xff0c;最后准备好预训练的MiniGPT-4进行模型部署。为了便于理解&#…

Photoshop简单案例(10)——利用PS修改证件照尺寸为1寸(或其他)

目录 一、项目介绍二、基本流程三、效果演示 一、项目介绍 本文介绍一下利用Photoshop修改证件照尺寸为1寸的方法。 二、基本流程 首先打开新建一个空白画布&#xff0c;设置画布宽度和高度分别为25mm和35mm&#xff0c;分辨率为300&#xff0c;背景颜色与证件照背景相同&am…

基于GPT4All的大型语言模型设计生态系统

GPT4All 一套专为强大、定制的大型语言模型设计的生态系统,能够在消费级CPU上本地运行。在GPT4All中,所使用的模型是一个3GB至8GB的文件,读者可以自行下载该文件,并将其插入到GPT4All的开源生态系统软件中。这一软件生态系统由Nomic AI提供支持并进行维护,其目的是确保系统…

04-树 (数据结构和算法)

4.1 树的基本概念 树&#xff08;Tree&#xff09;是n&#xff08;n>0&#xff09;个结点的有限集&#xff0c;它或为空树&#xff08;n 0&#xff09;&#xff1b;或为非空树&#xff0c;对于非空树 T&#xff1a; 有且只有一个称之为根的结点 除根节点以外的其他结点可…

随手笔记——关于齐次变换矩阵的理解

随手笔记——关于齐次变换矩阵的理解 说明符号坐标系表示&#xff08;coordinate representation&#xff09;坐标系变换&#xff08;coordinate transformation&#xff09;点的操作&#xff08;point operator&#xff09; 说明 齐次变换矩阵的几种解释&#xff0c; 主要从坐…

十大排序算法【原理】【步骤】【动图】【C++实现】

十大排序算法 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要访问外存。常见的内部排序算法有&#xff1a;插入排序、希尔…

【面试题32】include和require的区别及用法

文章目录 一、前言二 、include和require的区别三、include和require的用法介绍3.1 include的用法3.2 require的用法及示例 四、include和require的用法示例4.1 包含文件4.2 包含文件并将结果赋值给变量4.3 动态包含文件4.4 使用绝对路径包含文件4.5 包含文件失败处理4.6 包含文…

MATLAB 的函数计算与作图

基本初等函数的输入系统运算与操作函数的输入函数值的计算1. 数值计算方式2. 符号计算方式2.1 函数&#xff1a;sym2.2 函数&#xff1a;syms 函数的作图1. 一般函数 yf(x) 的作图&#xff08;二维&#xff09;作图基本形式作多重线作图的线型和颜色作图的网格和标记、图例、字…

React Dva项目创建Model,并演示数据管理与函数调用

本文的话 我们讲一下定义Model 也就是Dva中redux的部分 我们打开一个刚创建的Dva项目 看到 src下的models 下 就是Model部分 这里 他给我们了一个案例 如果用 react-redux 管理 模块多了之后会看着比较乱 或 很麻烦 但是 大家会发现 在Model中 他将这些都放在一起了 只需要创建…

css属性

1、形状相关的 宽、高、边线&#xff08;粗细、线样式、颜色&#xff09;、弧度、前景色、背景色、透明度 圆角矩形&#xff1a; 随着radius的增加&#xff0c;角会越来越圆&#xff0c;当设置为高的一半&#xff08;高200是直径&#xff09;时&#xff0c;就会成圆角 宽高都是…

请求响应-日期时间参数的接受

日期参数 由于从前端发送的请求中&#xff0c;日期的格式可能各不相同&#xff0c;使用DateTimeFormat注解完成日期参数格式的转换具体关键代码如下&#xff1a; 在postman中发出对应请求携带对应参数结果如下&#xff1a; 参数名称要与方法中的形参名称一致&#xff0c;免得…

oracle排序问题

记录工作中遇到的问题让工作更加顺利! 文章目录 1.排序1.1数字字符串排序问题解决1.2自定义处理NULL 1.排序 工作中遇到一个需要排序的地方&#xff0c;遇到两个函数 DENSE_RANK和 RANK &#xff1b;RANK 函数是按照一个字段或值排序后返回绝对位置&#xff08;即相同值排名相…