VUE3-07-工作笔记

本节:1月份的学习笔记

  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.

  1. vue的类名必须要用-, 不能用驼峰
  2. 类型文件的引入要 import type ,多加个type

export interface tableColumType {}

export type HandleMenuClick = ({})

定义interface接口和type类型引入的时候才要加type,定义的是class 就不需要加type:export class DataSearchList {}

41.为什么啊,传值都一样,方法也一样,但是,我自己写的就是获取不到数据

这个代理IP的原因

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`vue-property-decorator` 是一个用于在 Vue 中使用装饰器语法的库,它提供了一些装饰器来简化 Vue 组件的开发过程。这些装饰器可以用于定义组件的属性、方法、计算属性、生命周期钩子等。 以下是一些常用的装饰器和它们的用法: - `@Component(options?: ComponentOptions)`:将一个类声明为一个 Vue 组件。可以传入一个可选的 `ComponentOptions` 对象来配置组件选项,例如 `template`、`props`、`computed` 等。 - `@Prop(options?: (Vue.PropOptions | Vue.Constructor[] | Vue.Constructor)[] | Vue.PropOptions)`:定义一个组件的 prop 属性。可以传入一个可选的 `PropOptions` 对象来配置 prop 的类型、默认值等。 - `@Watch(path: string, options?: WatchOptions)`:监听一个属性或表达式的变化,并在变化时执行相应的方法。可以传入一个可选的 `WatchOptions` 对象来配置监听选项,例如 `deep`、`immediate` 等。 - `@Emit(event?: string)`:将一个方法标记为触发事件的方法,并指定要触发的事件名。可以传入一个可选的事件名,默认为方法名。 - `@Ref(refKey?: string)`:获取子组件或 DOM 元素的引用,并将其赋值给指定的属性。可以传入一个可选的引用键,默认为属性名。 - `@Inject(key?: string | symbol)`:注入一个父组件提供的属性或方法。可以传入一个可选的注入键,默认为属性名。 - `@Provide(key?: string | symbol)`:在组件中提供属性或方法,以供子组件注入使用。可以传入一个可选的提供键,默认为属性名。 - `@Model(event?: string, options?: (PropOptions | Constructor[] | Constructor)[] | PropOptions)`:将一个 prop 属性设置为组件的 v-model。可以指定要触发的事件名和 prop 的配置选项。 这些装饰器可以与 `vue-class-component` 一起使用,帮助我们更清晰、简洁地定义 Vue 组件,并提供更好的类型支持和可读性。 希望这些笔记对你有所帮助!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值