测试用例用不到完整的数据,但是ts要,如何解决?

今天 11:20
阅读 1 分钟
12
提出问题在下面的测试代码中,编写的测试用例不需要用到所有的Item字段,如果用上完整的字段很没必要,不用又ts检测无法通过,这种情况怎么处理? {代码...} {代码...} {代码...} 分析问题问题的关键在于,让ts认为你提供的是完整的Item,而ts中的断言就是干这个的。解决问题 {代码...} 总结问题该问题属于ts断言非常合...

一个简单的ts计时器

4 月 21 日
阅读 1 分钟
40
{代码...} 用法: {代码...}

如何让音频播放指定次数?

4 月 21 日
阅读 2 分钟
39
代码示例 {代码...} 调用play(2),也就是期望播放2次。初始化一个计数器和一个Audio对象。为音频添加播放结束事件监听器,回调函数为onEnded。然后调用audio.play()进行播放。当onEnded被调用,说明播放完成,我们将计数器自增加1。检查计数器是否达到期望次数:如果达到,则移除audio上的ended事件,流程结束。如果未达...

当从localStorage中获取数据时,如何做异常处理?

4 月 20 日
阅读 2 分钟
37
下面的代码在有初始值的情况下,能够工作的很好,但是当localStorage中存在非法的数据时就会抛出异常,如果你的程序没有做好异常处理,就会崩溃。

什么时候不应该使用useEffect?

4 月 20 日
阅读 2 分钟
13
当你的数据是同步的差的:数据来源是同步的,没有必要使用。 {代码...} 正确示例:直接使用。 {代码...} 当你的数据可以通过其他数据计算得来差的: {代码...} 更好的:从已有数据中派生。 {代码...}

react-router-dom@6中如何在组件外进行跳转路由?

4 月 17 日
阅读 1 分钟
37
react-router-dom@6中无法直接使用history模块,换了如下方式: {代码...}

TypeScript新增接口和更新接口传参定义差异的问题

4 月 15 日
阅读 1 分钟
56
{代码...} 方案1:分别定义 {代码...} 方案2:使用Partial {代码...}

使用form-data的content-type上传文件问题

4 月 12 日
阅读 1 分钟
43
问题当后端需要我们上传文件时,一般会用form-data的类型。接口文档像这样:目标是发出这样一个请求:代码示例 {代码...} 注意不要对formdata进行包装,以下是错误示例: {代码...}

TypeScript泛型在ajax上的应用

3 月 29 日
阅读 2 分钟
61
泛型参数 {代码...} 泛型响应 {代码...} 同时指定请求和响应为泛型 {代码...} 冗余应用应用场景UserResponse和NewsResponse属于冗余的定义。 {代码...} 用泛型去掉UserResponse和NewsResponse的冗余的定义。 {代码...}

数组方法中的slice与toSpliced

3 月 27 日
阅读 1 分钟
91
方法罗列方法是否修改原数组返回值slice否包含摘取元素的新数组toSpliced否不包含被删除元素的新数组slice获取指定位置的元素,然后将这些元素作为数组返回。函数签名:slice([start], [end])start摘取开始位置end摘取结束位置使用示例:浅拷贝 {代码...} start默认为0,end默认为items.length所以在两个参数都不指定的...

TypeScript中的断言语法(as)理解

3 月 24 日
阅读 3 分钟
129
如下代码,我们调用document.getElementById获取一个元素,然后尝试对其调用getContext方法。然而这段代码无法通过ts检查,而是会抛出错误。

vue pinia与vue hooks(Composition API)的关键差异

3 月 23 日
阅读 1 分钟
130
vue pinia是一个单例,也就是说多次初始化实例都是同一个,所以在多个组件中使用时,他们修改的时同一份数据,也就能实现vue pinia的设计目的,即数据共享。

react条件几中条件运算方式

3 月 23 日
阅读 1 分钟
88
if else没什么好讲的。 {代码...} 应用场景:-注意事项:-三元运算符二选一渲染。应用场景:在两个候选结果中取一个的情况。 {代码...} 注意事项:避免嵌套,如果发生嵌套,那说明你的代码需要重构。逻辑与(&&)只期望条件为真时渲染。jsx不会渲染boolean值,所以如果为false,就什么都不渲染。应用场景:只有一个候选...

如何使用Github Pages发布自己的个人网页?

3 月 15 日
阅读 2 分钟
96
创建一个仓库名为账户名.github.io。比如我的账户名为refanbanzhangwork,那么我的仓库名就填写:refanbanzhangwork.github.io。其他位置保持默认就好了,然后点击Create repository按钮。

git使用记录

3 月 12 日
阅读 1 分钟
117
window的git默认不区分大小写,也就是你修改文件的大小写,git是感知不到你的修改的。所以如果遇到文件大小写问题,需要开启大小写敏感。

关于Github Pages部署SPA应用后,刷新路由404的问题

3 月 11 日
阅读 2 分钟
86
原理:当Github Pages发现无法处理的前端路由时,会跳转至404.html,此时我们在404.html利用meta的自动重定向能力,跳转至index.html,从而再次能够接管前端路由。

SPA应用的hash模式和history模式部署问题

3 月 9 日
阅读 1 分钟
129
这是因为hash模式的路由path值并不会传递给后端,所以你的任意path,对后端来说都不可见,它只会认为你在访问根目录的index.html。

npm是如何处理多版本依赖的?

3 月 9 日
阅读 1 分钟
137
两种模式nest模式基本行为:在require/import时,向上递归查找依赖,直到全局node_modules结束。特点:每个包在自己内部管理依赖,结构清晰简单。不足:如果A包和B包都依赖了axios,就会导致axios在A包和B包的node_modules中各安装一次,产生重复安装。flat模式基本模式:在require/import时,向上递归查找依赖,直到全...

yarn本地安装记录

3 月 6 日
阅读 1 分钟
130
为什么要本地安装?多人开发时,每个人电脑上装的yarn版本可能不一样,有时这会导致微妙且不易察觉的问题。利用本地安装,我们可以在项目中保证版本一致。怎么做?1 首先保证你有一个全局的yarn版本 {代码...} 验证一下安装是否成功 {代码...} 2 进入到项目根目录中,执行安装命令 {代码...} 验证一下安装是否成功 {代码...

ts类型定义记录

3 月 5 日
阅读 4 分钟
319
一个函数的参数是vue的ref类型,该如何进行ts声明呢?一个变量inputEl是ref<HTMLInputElement>类型,将其传给了函数useCursor: {代码...} 在useCursor中对inputEl的类型定义: {代码...} 优化一下,将类型定义共享: {代码...} {代码...} {代码...} ReactNode、ReactElement、ReactChild、ReactText、 ReactElemen...

fatal: refusing to merge unrelated histories

3 月 5 日
阅读 1 分钟
96
原因git认为你试图merge两份数据的commit历史是完全不想关的,所以拒绝操作。解法明确告诉git,你所操作的数据是相关的。 {代码...} 其它后续如何避免这个错误?避免对一个已经有自己commit历史的本地仓库执行git pull以拉取一个拥有不同commit历史的远程仓库。

.nrmrc和.yarnrc配置镜像源

3 月 3 日
阅读 3 分钟
480
用途使用npm或者yarn安装依赖时,指定依赖的镜像源。示例使用npm安装依赖 {代码...} 使用小于yarn@2.0安装依赖 {代码...} 使用大于等于yarn@2.0安装依赖 {代码...} 注意事项如何单独为某个包指定镜像源?npm和yarn均无法为单个包配置镜像源。 {代码...} 配置文件的优先级如何?配置文件有优先级之分。项目根目录中的要比...

当遍历遇上异步请求

3 月 2 日
阅读 4 分钟
190
目标遍历请求时,让请求依次执行(等待前一次请求响应后再发起下一次请求)并且等待所有请求完成。示例前置物料 {代码...} for(数组和对象) {代码...} 输出结果:请求依次执行并且等待所有请求完成。for of(适用于数组) {代码...} 输出结果:请求依次执行并且等待所有请求完成。for in(适用于对象) {代码...} 输出...

git restore极简使用记录

3 月 1 日
阅读 1 分钟
464
用途撤销修改。使用示例前置知识工作区(Changes) > 暂存区(Staged Chagnes)修改文件后,文件会出现在工作区。git add .或者git add filename后,文件会出现在暂存区。用法1把文件从工作区Changes下丢弃。 {代码...} 执行git restore .后,Changes被清空并隐藏了。用法2把文件从暂存区Staged Changes下退回到Changes。...

patch-package极简使用记录

2 月 29 日
阅读 1 分钟
159
用途保存node_modules文件夹中对包的修改,避免重新安装依赖时被重置。示例物料准备:一个你想要修改的npm包,这里用refanbanzhang这个包来演示。操作流程(初次使用):安装npm install patch-package。定位到refanbanzhang包中并进行修改。执行npx patch-package refanbanzhang。重新安装npm install refanbanzhang。...

构建流程问题记录

2 月 29 日
阅读 1 分钟
168
修改镜像源后,如果没有更新或者删除.lock文件,因为如果存在的话,使用yarn install/npm install还是会按照.lock文件里面的硬编码原地址去下载,需要留意。

LF will be replaced by CRLF(eol)

2 月 27 日
阅读 2 分钟
638
前置知识LF代表linux风格的行尾字符\nCRLF代表windows风格的行尾字符\r\n发生原因在提交代码的时候,git检测到非当前系统设置的换行符,git会将其进行转换。如何解决?通过设置git的core.autocrlf属性来解决。接下来我们就来了解一下core.autocrlf,然后用来解决我们的问题。如何读取当前git config core.autocrlf的设置...

chrome网络面板的4种过滤方式

2 月 26 日
阅读 1 分钟
179
初始状态关键字totalValue只显示包含totalValue的请求排除-totalValue只显示不包含totalValue的请求正则/ad$/只显示以ad结尾的请求正则也可以组合排除使用-/ad$/只显示不以ad结尾的请求查看特定域domain:*dida365.com只显示域名中包含dida365.com的请求

当useEffect遇到函数依赖

2 月 24 日
阅读 3 分钟
546
什么原因?问题出在onKeyup内部的onSubmit,由于onSubmit所在的useEffect没有依赖,所以只会在初始化执行一次,onSubmit内部的username也就会一直处于初次渲染的状态,值为空字符。

代码优化记录

2 月 21 日
阅读 3 分钟
343
使用reduce时,避免对accumulator执行副作用 {代码...} 去掉副作用 {代码...} 优化对一份数据的多次遍历 {代码...} 使用reduce来改进: {代码...} 去掉副作用代码: {代码...} 对find的结果进行判空 {代码...} 上面的代码中,我们在find的返回值上直接访问属性,会有可能导致异常。因为在没有找到目标时,find的返回值会...