本节:1月份的学习笔记
- Unhandled error during execution of scheduler flush. This is likely a Vue internals bug.
执行调度程序刷新期间发生未处理的错误。这可能是Vue内部错误。代码逻辑,或者变量写错了,比如table要用[],我写成了{}。
解决办法,就是把遇到的代码全部看一遍,一个一个排查,发现是因为偷懒,直接用老方法,然后需求不兼容导致的。
2.定义变量的时候,不能全部都设置any,要思考是什么类型的
3.JavaScript 中的 valueOf() 方法用于返回指定对象的原始值,若对象没有原始值,则将返回对象本身。通常由JavaScript内部 调用,而不是在代码中显式调用。
例子:计算时间日期,dayjs将时间转换成时间戳(全数字)相减,就可以得出除去那个范围的时间
import dayjs from "dayjs";
// 开始时间
const disabledEndDate = (endTime: string) => {
const startTime = searchList.startTime;
if (!endTime || !startTime) {
return false;
}
console.log(dayjs(startTime).valueOf(), "56323035133614)"); //dayjs转换成时间戳
return dayjs(startTime).valueOf() - dayjs(endTime).valueOf() > 0;
};
4.给虚拟机里面安装环境。先安装好虚拟机,使用光盘的。
安装nbp环境步骤:
xshell 连接 ssh ip地址(拿环境包的IP地址)
点绿的,点击一下返回,拿到压缩包,移到桌面,然后再ssh连接到要安装的虚拟机,把安装包移动进去 :解压,安装
tar -xvf 安装包名字
再使用授权码,授权一下就可以了
5.虚拟机ping得通百度,而且也是桥接模式也在一个网段,就是ping不通本地主机,有可能是本机的防火墙关,关了就通了
6.响应式,使用a-row和a-col ,如果是表单则是label控制,如果是缩放的高度的话,则使用多媒体响应式。
@media screen and(max-width:750px){//小于750px时候的
.topClass{
Margin-top:8px}
}
7.判断字符串是否包含空格:
//RegExp()正则表达式匹配
var textStr= "khj kshdf";
var judgeFn = /\s/g; //正则表达式
if (judgeFn.test(textStr)) {
console.log("【结果】:内容包含有空格!");
} test() 方法用于检测一个字符串是否匹配某个模式.
去除字符串内所有的空格:str = str.replace(/\s*/g,"");
8.vscode设置中文:中文设置
按快捷键“Ctrl+Shift+P”。
在“vscode”顶部会出现一个搜索框。
输入“configure language”,然后回车。
“vscode”里面就会打开一个语言配置文件。
将“en-us”修改成“zh-cn”。
按“Ctrl+S”保存设置。
关闭“vscode”,再次打开就可以看到中文界面了。
9.取数组里面的最大值: Math.max(startArr);
10.对象就要用reactive,但是用了这个之后,就获取不到值,原因是这样不能直接等于赋值,用合并比较好;还有就是可能是我的类型定义错了,导致赋值有问题
11.copyForm.option.runTime.splice(index, 1); //splice(删掉指定下标位置的元素,往后删几个)
12.hook就是钩子函数:编写格式:
(1)引入要用的api (2)export const useName = ()=>{ } //写一些常用的方法,比如分页,权限过滤,都是.ts后缀的文件
13.util实用程序,里面可以写自定义指令,类型转换判断,常用的数组,是.ts后缀的文件
14.git 提交时遇到冲突,解决冲突之后,再pull,提交一遍,要是还是有问题,可以git stash 把文件先暂存一下,再git stash pop 再还原再修改一次冲突,git status 看看提示,根据提示执行即可
15.学习了动态组件<component></component> 实际显示什么内容,是通过is来决定 ,还有保存上一个页面的数据缓存,使用<keep-alive>缓存即可
16.注册props,自定义属性传数据,类型校验type:string,单向数据流,遵循单向绑定,子组件的变化不影响父组件,父组件改变影响子组件
17.<slot>插槽,说白了,就是父组件里面放的子组件文字可以传到子组件里面,<slot>可以在子组件显示出父组件的内容
18.v-model修饰符
.lazy :change事件更新后更新数据;.number:用户输入内容自动转换为数字;.trim:自动去掉用户输入内容的空格
19.文章写代码的结构都是,先创建文件夹,存放一级的页面,一级页面一般就是组件,点击组件,在跳转到组件,组件里面如果有常用的type、数组、方法就封装出来,不然就重新创建新的文件夹放进去
网上很多都只是基础教程,现阶段需要看代码专研了。(文章表单组件的编写,就是写表单组件一个文件.ts,再写一个表单动态判断栏目的.ts文件。这里有多个栏目在这里,要进行动态的判断
)
20.学习了一些函数:reduce() 方法接收一个函数作为累加器;Array entries()
从数组中创建一个可迭代的对象,就是可以返回一个key value形式的数组,下标为key,元素为value;hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。
21.函数调用的方式创建组件
22.二次封装 :在原来租组件的基础上,添加自己想要的功能,又保留原来的功能。使用v-bind ="$attrs" 可以引入组件原来所有的props元素。组件模块编写:
script:props写属性,setup写事件
tempalte:写界面布局
style:写样式 .$lisenters将事件处理函数传给子组件
利用父组件上的$listeners属性,这个属性包含了父组件的v-on事件监听器;$slots
可以从父组件传文字给子组件,传递作用域插槽,使用$scopedSlots属性,包含了组件接收的所有插槽·
23.withDirectives()#
用于给 vnode 增加自定义指令。
withModifiers()#
用于向事件处理函数添加内置 v-on 修饰符
PropType<T>#
用于在用运行时 props 声明时给一个 prop 标注更复杂的类型定义。
为组件的 emits 标注类型#
我们可以给 emits 选项提供一个对象来声明组件所触发的事件,以及这些事件所期望的参数类型。试图触发未声明的事件会抛出一个类型错误:
24.自定义组件模块编写:
script:props写属性,setup写事件
tempalte:写界面布局
style:写样式
这样写法css是默认值有要去控制是否显示,就是那个叉叉是否显示。
25.要告诉自己,自己不是蠢,是不细心,很多细节没记录下来就容易忘记所以没解决;遇不到不会的,不是蠢,是没学过,学一下就可以了,只是一个语法问题,没其他问题;所以要多花时间学习。
学而不思则罔,思而不学则殆,要记录笔记,要再复盘笔记,想想代码有没有更优化的地方。
每天下班不追求多学什么,就多看一个知识点,十分钟的就可以了。
周六11-12点可以学习一个小时,下午3-5点学习2个小时,周日也是,现在能力无论是解决问题的方法,还是代码技术的积累都不够支撑项目,必须要努力学习才可以。学习任何行业都有一个痛苦的过程,才可以上一个阶梯。
26.之前一直不知道为什么a-select 明明选择了一个,可是它自动点击两个, 我估计是其他地方设置的值太多了。乱了,我还各种百度,看其他地方,白白浪费了很多时间,又焦头烂额的,实际上,解决办法就是,这个地方出问题,就只看这个地方,是不是变量写错了,或者去看这里对应的方法,一条一条数据的删掉,去看看是不是哪里影响了
27.计算不同type类型,显示不同的内容
28.arr.reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
可以计算数组里所有值的和
https://blog.csdn.net/w17624003437/article/details/125858710
29.Array entries()
从数组中创建一个可迭代的对象,就是可以返回一个key value形式的数组,下标为key,元素为value
30.forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
var arr = [1, 2, 3, 4, 5];
arr.forEach(()=>(item) {
if (item === 3) {
return;
}//3就不输出了
console.log(item);
31.文章表单组件的编写,就是写表单组件一个文件.ts,再写一个表单动态判断栏目的.ts文件。这里有多个栏目在这里,要进行动态的判断
32.异步组件
list :() =>import(/*这是魔法注释,可以改变文件的名字webpackChunkName:"list"*/,"组件地址");
//这个文件会在点击之后,才调用,实现异步调用的功能。设置了异步组件的方法。
33.使用锁,防止重复请求。请求返回前不允许二次请求
定义一个初始化为false的变量
if(isLock){ return}
//为真就不能再次调用搜索方法
asycnInt().then((res)=>{
//这里获取到值
才设置为 islock = false //说明在请求
})
34.判断是不是数组:Array.isArray(数组名)如果对象是数组返回 true,否则返回 false。
35.扩展了一个新的v-model:name属性,现在可以绑定两个属性
36.焦虑没有用,只会痛苦也没有意义。学习才是唯一解决办法,哪怕不知道方向是什么,也不可以停止寻找,靠自己双脚一步一步踏出脚印,解决问题。
人一定是你自己不断寻找出路,走了很多路,一直往上帕,最后别人看到你才给你搭把手,拉你出来,没有人有义务一下子救你出来
37.JSON.stringify() 丝状的 方法将某个对象转换成 JSON 字符串形式,普通对象的key是没双引号的,json字符串就有。就是把前端的js对象格式,转换成服务器可以接收的字符串格式的对象
前端传送服务器数据:前端js格式 --->服务器字符串对象
38.JSON.parse() //作语法分析
JSON 通常用于与服务端交换数据。
在接收服务器数据时一般是字符串。
我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。就是接收服务器的字符串对象,转换成前端没有双引号的前端js对象格式
JSON.parse()前端读取服务器数据:服务器字符串对象---->前端js对象
href="javascript:void(0)":让一个超链接点击后不链接到任何地方,而鼠标移上去仍然显示手指形状的图标,就用javascript:void(0)。
39.git 下载:下载新的内容,先备份之前的东西,然后再删掉git.
git clone ssh://git@datapp.gitlab.com:202/nbp3/web2.git //下载
git branch -a //查看所有节点
git checkout -b "develope" //切换到develope节点下面
git pull
git branch --set-upstream-to=origin/develope
这样说明成功:Administrator@DESKTOP-AE6N76D MINGW64 ~/Desktop/c/web2/web2/master (develope)
$ git pull
Already up to date.
再运行一下就可以了
40.
- vue的类名必须要用-, 不能用驼峰
- 类型文件的引入要 import type ,多加个type
export interface tableColumType {}
export type HandleMenuClick = ({})
定义interface接口和type类型引入的时候才要加type,定义的是class 就不需要加type:export class DataSearchList {}
41.为什么啊,传值都一样,方法也一样,但是,我自己写的就是获取不到数据
这个代理IP的原因