🥽 学习 - vue-router@4 不规范的 params 传参导致接收不到数据

在 vue2 中,若想在单页面项目中跳转页面时,不把参数暴漏在 url 中
可以通过不定义 prop,但是 $router.push 时在 params 里加上参数
在目标页面通过 $route.params.xxx 也能获取到

但是这种方式在 vue3 vue-router@4 中行不通了。

🤨 学习 - vue3 的 $attrs 和 emit 声明

爷孙组件的事件传递和 vue2 的写法不一样了

$listeners 在 3 中删除了,将事件合并到了 $attrs 中

需要使用 v-bind 递归绑定 $attrs 传递事件而不是 v-on

$attrs 里的事件名会转为驼峰,并且自动加上 on 前缀
例:
@sort 在 $attrs 中的 key 为 onSort
@on-sort 在 $attrs 中的 key onOnSort

emit 里声明的事件,将从 $attrs 里删除,无法继续递归传递

😅 学习 - 移动设备的安全距离

ios vh 单位有问题,100vh 总会高一块,是因为 ios 算上了底部的 “安全距离”,
同事给了解决办法,非常好用

😇 学习 - 获取指定元素下的所有文本节点

如题目。

🚅 学习 - 使元素出现在视口

✨ scrollIntoView:滚动父级容器,使得元素出现在视口

🏻 学习 - vuex 统一的 mutation 方法

mutation 的定义比较迷…
个人喜欢不管是不是异步逻辑,都放在 action 中处理,然后提交 mutation
但是如果一个 state 就定义一个 mutation 方法,就太累了
这里记录定义一个统一的方法
PS:基于 lodash 的 set 方法实现

🔭 学习 - 用CSS判断同级别元素的数量并做出样式控制

有时需要判断同级别,元素的数量
根据不同的数量,显示不同的样式,一般这种需求需要用 JS 去控制
终于有一天我认为只用 css 没准也能实现,百度了一下,结果就来了~

🔄 学习 - 递归组件

比较常见的例子是 “树状结构” 和 “模态框的嵌套弹出”。

🖨️ 学习 - 打印网页

几年前的我 “嗯,这个功能用的比较少,呸,应该就不会用到”,没想到真的在项目中碰到了。

✂ 学习 - 拦截用户的复制操作

🔥 简单粗暴,禁用复制内容。
PS:如果用户懂开发,就可以通过各种途径(比如 F12 等),获取内容。