2022.08.3
- 使用
<datalist>
实现<input>
的 autocomplete
为
<input>
标签的 list
属性指定一个 id
,该 id
对应一个包含 <option>
的 <datalist>
标签作为 autocomplete 的数据来源。2022.08.04
- CSS父选择器
:has()
- 表单校验通过伪类
:valid
和未通过伪类:invalid
- 使用
@property
自定义CSS属性
使用 CSS 语法定义
使用 DOM 语法定义
2022.08.05
- React Controlled Input 中的数字输入问题
非预期字符处理:
当
<input>
标签的 type
被设置为 number
时,用户可以输入科学记数法的 e
,一开始尝试在 onChange
事件中将 e
匹配并去除,input
的 value
属性确实显示为 ‘’
,但界面并没有更新。但其实可输入的非预期字符还要多
['e', 'E', '+', '-']
解决方法:
限制小数输入位数:
在
onChange
事件中input
标签onBlur
时去掉末尾的 .
:当
input
标签为 number
时,末尾的 .
字符并不会被算在 value
中,因此也不会被 state
记录,所以这个 .
就处在一个非法地带。所以去除它并不能通过简单的更新。而是需要先将值置空,再重新赋值。而且因为 React18 中的更新合并,还需要使用
flushSync
来使两次赋值生效。2022.08.05
- git 中的 tag 有什么用
- 查看所有的标签:
git tag
- 创建标签:
git tag [tagname]
- 删除标签:
git tag [tagname] -d
- 查看标签内容:
git cat-file -p [tagname]
tag 一般被用来标记“版本”,虽然每个 commit 都有自己的消息体,但要找到某个特定的 commit 还是太麻烦了。所以 tag 类似于给特定的 commit 取一个别名。
- 如何单独合并某一个 commit
git cherry-pick [commit]
- 盐酸多西环素 和 盐酸左氧氟沙星
前者是治疗皮肤的,对喉咙有腐蚀性,后者是抗生素,治疗炎症。
名字很像,不要吃错。
2022.08.08
offset
属性
CSS3 新增属性
offset
可以让元素沿着指定的路径进行运动。offset-anchor
:指定元素运动的中心。offset-position
:指定元素运动的起始位置。offset-path
: 指定元素在路径上的位置。offset-distance
: 指定元素在路径上的位置。offset-rotate
:指定元素运动时的指向。- 在 CSS 中单独使用 SVG 中的某个元素
mask
属性
使用位图或 SVG 元素为目标元素添加遮罩蒙版,可以指定只显示蒙版部分或截去蒙版部分。
useCallback
搭配memo
使用
当组件重新渲染时,虽然
useCallback
不会重新执行,但子组件还是会重新渲染。所以使用 React.memo
包裹组件,这样在 useCallback
的返回函数不变的情况下,子组件也不会重新渲染。2022.08.09
npm
、yarn
和pnpm
npm
是围绕着语义控制版本的思想设计的,npm3 采用了扁平依赖关系树来解决问题,但npm必须首先遍历所有的项目依赖关系,然后再决定如何生成扁平的node_modules目录结构。npm必须为所有使用到的模块构建一个完整的依赖关系树,这是一个耗时的操作,是npm安装速度慢的一个很重要的原因 。yarn
是经过重新设计的npm客户端。提供离线模式来安装本地缓存的依赖,yarn.lock 文件则包含要安装的内容和校验,以确保使用的库的版本相同。pnpm
继承了yarn
的离线安装和确定性能力,且速度超过了前两者。
- React-router 中的的state传参
<HashRouter>
不支持 location.key
与 location.state
,<HashRouter>
通过state
传递参数,刷新页面后参数丢失,官方建议使用<BrowserRouter>
,<BrowserRouter>
页面刷新参数也不会丢失。- React-router 中的路由嵌套
在使用 React-router 时,使用嵌套的路由结构,并在父组件的相应位置使用
<Outlet/>
组件进行占位。通过
<Outlet/>
进行传参,通过 <Outlet/>
组件的 context 组件传递 props
,再通过 useOutletContext
钩子在自组件中获取 props
。2022.08.011
-
<script type="importmap" >
有什么用
在体验 spline 的操作时,可以直接导出为
three.js
代码,在源码中发现这样的用法index.html
main.js
在
importmap
中声明的组件会动态引入,在 module
类型的 JavaScript 中 可以直接 import
。- 设置某个元素下的 CSS 变量
2022.08.12
- 将 UTC 时间转换为本地时间 —— 通过 dayjs
- Navigate auth 重定向
2022.08.13
- ComponentType
React 组件类型最佳使用定义,包含函数组件定义和类组件定义。
2022.08.14
- 使用
Union
或Enum
作为对象的 key
- TypeScript 中
Promise.allSettled
不能直接解构出status
,value
或reason
2022.08.15
- React 的 class component 是实例,生命周期
- 挂载 生命周期
- constructor:调用组件的 constructor 方法
- getDerivedStateFromProps:让组件在 props 变化时 更新state
- render:class 组件中唯一必须实现的方法,返回 JSX
- componentDidMount:组件挂载后
- 更新 生命周期
- getDerivedStateFromProps:在 render 之前调用
- shouldComponentUpdate:在 props 或 state 变化时,在渲染之前执行
- render
- getSnapshotBeforeUpdate:在最近一次渲染输出前调用
- componentDidUpdate:在更新后立即被调用
- 卸载 生命周期
- componentWillUnmount:组件卸载及销毁话题之前调用
2022.08.19
- scroll-snap-type
CSS
简单实现轮播图临界点判断。2022.08.22
- linux 查看当前路径
pwa
2022.08.23
- 在
react
中引入svg
2022.08.24
- 原生 JS 支持的深拷贝
- React class 组件的
setState
方法
setState
的第二个参数为一个callback , 这个callback 将会在 setState
将值更新后执行。2022.08.26
- 在 iOS 下自动播放视频
需要注意,如果在低电量模式下将无法播放。
2022.08.29
content-visibility: auto;
如果元素在可视区内,则正常渲染元素。如果元素不在可视区内,则会跳过。
navigator.clipboard.writeText
复制文字
will-change
告诉浏览器元素会有哪些变化的方法,这样浏览器可以在元素真正发生变化之前提前做好对应的优化准备。
- scss extends
2022.08.30
- 移除项目中的
.DS_Store
文件 - 在 .
gitignore
文件 中 添加 .DS_Store
- 移除已经被 git 追踪的文件
git rm --cached .DS_Store
2022.08.31
- next.js 转发
- Affinity Designer 中导出为 SVG 格式时,选择用于导出可以保存完整路径信息,否则会变成 image。