VUE3-工作笔记-06

news/2024/11/29 5:49:09/

本节:总结11月份学习的内容

1.如果有很多个功能是一样的,那就先写一个测试很多次,确定没有bug再全部改,不然辛辛苦苦全部改了之后,发现还是有bug又要重新改,最好是写成组件的形式,写成hook。

2.命名规范:如果是一样功能的方法,不同页面也叫一样的名字,这样比较规范,复制的时候也不容易出错。

命名规范:

获取单个对象用 get 做前缀,或者value做后缀。

获取对象数组用 list 做后缀。查询用 query/search 做前缀

插入用 add/save 做前缀。编辑、更新用 edit/update 做前缀。数组对象用 List 做后缀。类名首字母大写。提交方法叫 onSubmit,或者其他的操作可以是deleteClick这样。

命名需要符合语义化,如果函数命名,可以采用加上动词前缀:

can 判断是否可执行某个动作;has 判断是否含有某个值;is 判断是否为某个值

get 获取某个值;set 设置某个值; isShow: '是否显示', isVisible: '是否可见',

isLoading: '是否处于加载中', isConnecting: '是否处于连接中',

isValidating: '正在验证中', isRunning: '正在运行中', isListening: '正在监听中'

前端命名规则与各个场景的命名方法,解决你取变量名的痛苦!!!(二) - 掘金

固定的大小值,比如表格,这些也记录下来,就不用老是找了;表格的栏目之间的位置摆放也要有想法,如果有的值是固定文字大小,而且你其他地方也需要位置,那那个已知的规定文字大小,就要设置好位置,不要占太大空间,包括下拉框之类的,这种位置空间上的小细节,一般边距是8px的倍数来变化。(在没有ui设计的情况下)

3.是值的时候才用ref,是对象就用reative。但是,要注意reatvice赋值普通数据会失去响应式。

4.分页的写法,既然分页一点就变化,但是我又要调用搜索方法,那么就直接把要传的值放在搜索里面,点击搜索之后,获取数据的值才赋值到,不然初始化的时候就问空,这样获取值又可以总是获取到全部。

5.一些常用的js函数:

string.replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;

字符串转为数字: Number(str); parseInt(12.312)//将任何内容为整数(小数、字符串等)

把数字转换为字符串: num.toString(),num.toString(2||8||16 );//转换成对应的2、8、16进制

 Math.floor(123.2312)向下取整 ;Math.ceil( ) 向上取整;Math.round(2.60);//四舍五入取整数

a.toFixed(2) 取两位小数 //进行四舍五入并保留固定小数位;a.toFixed() 这是取整

Math.pow()方法将基数返回指数幂,即,基数指数。Math.pow(5, 3);// 125

Math.abs(-7.25);//返回7.25   abs()取一个数的绝对值,感觉就是取正数。x 的绝对值。如果 x 不是数字返回 NaN,如果 x 为 null 返回 0。

str.match(正则表达式) // 可以字符串中检索指定的值,或者是匹配一个或多个正则表达式

 array.indexOf(“检查的字符”)/lastIndexOf() 返回检索字符所在的位置

array.concat(); //连接多个字符串,或者数组。var str1 = "Hello ";var str2 = "world!";
var n = str1.concat(str2);

array.every(函数判断) 方法用于检测数组所有元素是否都符合指定条件,返回false或者true()。

array.fill() 方法用于将一个固定值替换数组的元素。

array.pop() 方法用于删除数组的最后一个元素并返回删除的元素 ;

array.shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

array.filter(函数判断),用于过滤出一个新的数组,新数组中的每个元素是通过判断,符合条件的所有元素

例子:array.filter((el) => userList.includes(el.id)) 

filter((el)=>{   判断内容})就可以对元素的状态进行一个函数的判断,挑出你要的(过滤出你要),组成一个新的数组,不会影响原来的数组。

Map的item和some的el是一样的都是单个的对象

ps:如何把数组对象中的属性单独提取出来成为一个新的对象数组?

给对象添加元素,直接  对象名.添加的元素名 = 添加的元素内容;

删除对象里面的属性,也是直接,delete  对象名.属性名。

ps:删除数组里面符合某个条件元素的对象。 先遍历循环,然后判断,slipce掉对应的数组。

spaceList.value.splice(i, 1);

str.slice(-1) 提取字符串的某个部分,并以新的字符串返回被提取的部分
string.slice(start(1开始位置),end(结束位置))
start如果为负数,则从尾部开始截取

 for (let j = 0; j < props.judgeSelectDevice.length; j++) {if (spaceList.value[i]?.id == props.judgeSelectDevice[i]?.id) {spaceList.value.splice(i, 1);}}

array.some():判断新添加的内容,是不是已存在的

div:
<a-inputv-model:value="denyIp"></a-input><a-button @click="handleAddDenyIp(denyIp)">添加</a-button>script:
// 添加限制ip
const handleAddDenyIp = (denyIp: string) => {if (denyIp && !data.denyIp.includes(denyIp)) {data.denyIp.unshift(denyIp);}
};

JavaScript Array 对象 | 菜鸟教程 :这是对象和数组的方法大全

6.使用ant design 滑轮组件的时候,max不会渲染计算之后的值,加上max之后,v-model的值初始化的时候也不显示,原因是我渲染值的顺序有问题,一开始计算的max的值没有获取到。组件有时候也会有问题,但是属性一般都是可以动态获取的,所以要检查自己的代码,都打出来看看,或者百度。

7.vue3模态框初始化数据,点击第一次没获取到,点击第二次才获取到,使用nextTick,实现异步获取的方法

const showModal = async () => {await nextTick();visible.value = true;getFusion();
};

8.值一直获取不到,可能是ref的类型,忘记加 .value, 所以赋值的时候没赋值到值。如果在渲染div的部分里面ref属性的值加了. value,可能会报渲染问题的错误

9.VUE中computed 、created 、mounted 的先后顺序

(1).computed 、created 、mounted 的先后顺序

created => computed => mounted

(2).父子组件生命周期执行顺序(子组件先挂载好,在进行父组件的挂载)

​ 页面初始化时: 父beforeCreate -> 父created -> 父beforeMount ->子beforeCreate -> 子created ->子beforeMount -> 子mounted-> 父mounted

页面销毁时: 父beforeDestroy -> 子beforeDestroy ->子destroyed->父 destroyed

销毁时也是子组件先销毁要先于父组件销毁

(3).页面跳转的生命周期执行顺序

​ 旧页面跳转到新页面: 新页面created > 新beforeMount > 旧beforeDestroy > 旧:destroyed > 新mounted

(4).computed 、watch、created 、mounted 的先后顺序

immediate 为false时: created => computed => mounted => watch

immediate 为true时: watch =>created=> computed => mounted

昨天纠结了很久,以为是生命周期的问题,因为一开始是跳了个0,然后才出现真实的数字,但是,页面取到的还是原先的数字。但是计算器的属性就是有变化,它就会计算,后面发现原因是其实数字是获取到了,但是其他地方进行了一个计算,要不就是数字取值的时候就有问题,所以看起来有问题,以后遇到这种问题,要输出来看,然后再看看其他地方。

10.v-model' directives require the attribute value which is valid as LHS.

     v-model的值必须是一个数据变量,而不是一个条件值或计算值。如果你需要用条件值或计算值,那么建议不要使用v-model,而是手动传递props并侦听change事件。

11.Unhandled error during execution of render function 执行渲染函数期间出现未处理的错误

有时候就是多了个value,在渲染div的时候,一些部分不应该有value

12.下拉框,绑定多个值,两种方法:

(1):value="`${item.dev},$(item.path)`" 

再通过split(",")以逗号分割,赋值。

 ps:但是太麻烦了,而且唯一命名里面有","   那就容易数据出错,所以用方法二。

方法二:通过change变化监听获取到的值,:record="",

13.ant design校验规则第二层,或者创建个新数组。

14.判断数字转换成对应的文字:写方法,传值,进行if判断,return "内容"。

 

15.ant.design Table组件点击一个选项框却把所有选项都选中了,因为要绑定一个唯一值,这样:rowKey="ipAddress"就可以了。

要不就是没有点击的内容,那是因为没有绑定v-model值 

16.calc() 函数用于动态计算长度值。

需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px);height:calc(100%-400px)


http://www.ppmy.cn/news/1601.html

相关文章

【C++泛型学习笔记】函数模板

提到C的程序设计方法&#xff0c;最先想到的便是两种&#xff1a;面向过程和面向对象编程。但是当我们去阅读一些优秀的C库源码时&#xff08;比如CGAL&#xff09;&#xff0c;就会直接被其的泛型编程劝退。泛型编程也是C程序设计方法中的一种&#xff0c;不同于上述两种设计方…

Ra-01SC/Ra-01SCH模组驱动

目录简介硬件准备设备清单接线说明重要函数说明调试联系我们简介 本文档主要介绍Ra-01SC/Ra-01SCH模组驱动例程使用方法&#xff1b; 硬件准备 设备清单 硬件数量Ra-001SC/Ra-01SCH 模组2个杜邦线若干USB转TTL模块2个STM32F103C8T6开发板2个安卓线2根 接线说明 STM32F103C…

给定一个字符串str,求最长回文子序列长度。

问题描述&#xff1a; 给定一个字符串str&#xff0c;求最长回文子序列长度。 思想&#xff1a; 思想一&#xff1a; 根据回文串的性质&#xff0c;我们可以生成一个新的字符串&#xff0c;新字符串的顺序是原来字符串的倒序。本题可以转化为两个字符串求最长的公共子序列。 …

Windows搭建web站点:免费内网穿透发布至公网 1-2

什么是cpolar&#xff1f; cpolar是一个非常强大的内网穿透工具&#xff0c;开发调试的必备利器。 它可以将本地内网服务器的HTTP、HTTPS、TCP协议端口映射为公网地址端口&#xff0c;使得公网用户可以轻松访问您的内网服务器&#xff0c;无需部署至公网服务器。支持永久免费使…

Python 全栈系列209 so_pack

说明 新部署的基本服务 最近发现好些应用,特别是贴近某些具体功能的镜像里普遍都使用了SO加密。还有些连系统账户的权限都限制了,实在懒得去破解root密码。 当然现在站在自己的角度,也认可这样的设置,共享不一定代表完全开源。有时候想做修改只是因为作者封装镜像的时候功…

19.前端笔记-CSS-显示隐藏元素

1、元素的显示与隐藏 场景&#xff1a;网站广告&#xff0c;点击关闭就不见了&#xff0c;但是刷新页面&#xff0c;就会出现 本质&#xff1a;让一个元素在页面中隐藏或显示出来&#xff0c;隐藏不是删除 2、实现方式 2.1 display 显示隐藏&#xff08;***&#xff09; di…

纯自动化的消息发送工具实现!

纯自动化的python实现模仿的是人的手动操作的过程&#xff0c;并不做后端接口等的实际操作。 通过模仿手动操作完成业务处理&#xff0c;这里使用到了两个python的非标准模块&#xff0c;分别是pyautogui和pyperclip模块。 如果没有安装的话直接使用pip的方式安装一下这两个模…

搭建一个属于自己的博客

经过多个大佬的教程也踩了不少坑&#xff0c;下面是我的搭建过程可以参考一下 这是我的博客欢迎大家访问和留言&#xff1a;我的博客 搭建博客主教程&#xff1a; 【基础篇】hexo博客搭建教程 - huanhao - 博客园 部署到gitee&#xff1a; Hexo Gitee 免费部署静态博客_玄…