最近一直在开发可视化埋点系统,其中元素的曝光埋点,就是借助了 intersectionObserver 这个原生 api。也是网上推荐度比较高的方案,同时 2022 年,该 api 兼容性也已经很高,同时也有 polyfill,基本上使用无虞。
intersectionObserver 本身 api 非常简单,但是在实际使用的过程中,由于可视化埋点的一些特殊性以及对埋点准确性的要求,还是遇到了一些 dom 变更后的边缘场景,本文便是对这些边缘场景的一个记录及实现背后的一些考虑。
在日常的开发中,开发通用组件的机会其实并不多,尤其是在各种组件库已经遍地都是的情况下。而作为一个通用组件库的使用者,经常会看到把 React 组件作为参数传递下去的场景,每当这个时候,其实或多或少都会有一些疑问,比如:有些组件传递下去的是组件名,而有些组件传递下去的是一个箭头函数返回一个组件,而有些直接传递一个 jsx 创建好的元素,这些传递方案的适用场景如何,有什么不同,是否会导致组件的 memo 失效,是否会引发组件的不必要渲染?
本文是笔者在阅读了 antd、mui, react-select 的 api 之后,结合自己日常业务中使用的组件 api 格式,对传递一个组件作为 React 组件参数的方式的思考和总结,如果有写的不到位的,欢迎补充和指点。