React Scan 如何用 safeArea 选项避免工具栏与其他开发叠加层重叠【免费下载链接】react-scanScan and fix React performance issues项目地址: https://gitcode.com/GitHub_Trending/re/react-scan当你给一个 React 项目接入 React Scan 后它的工具栏widget会固定在视口某个角落。问题在于很多框架的开发环境叠加层也停在同一个角落——例如 Next.js 的 dev 指示器也默认贴在角落。两者叠在一起时React Scan 的工具栏会被挡住点击或读数都不方便。React Scan 用safeArea选项来解决这件事它指定工具栏距离视口各边保留多少像素让你把这个工具栏从其他开发叠加层旁边移开。适用前提是项目已在运行 React Scan 的开发环境你能在入口处传Options通过scan(options)/useScan(options)或运行时用setOptions(options)调整。safeArea 是什么、默认是多少safeArea是Options里的一个选项类型是「非负数字或{ top?, right?, bottom?, left? }对象」含义是工具栏到视口边缘的像素距离。源码注释直接说明了用途和默认值Distance (in pixels) the toolbar keeps from the viewport edges. Useful when other dev overlays (e.g. the Next.js dev indicator) sit in the same corner. Pass a single number to inset all edges, or an object to inset edges individually.default 24两种写法传一个数字四边都使用该距离。传一个对象只写需要调整的边其余边用默认值。默认内边距是 24px定义在 SAFE_AREA 常量。也就是说你不写safeArea时工具栏本来就会离每个边 24px当别的叠加层占掉的角落比这更宽时你才需要把它调大。配置方法在哪里传这个选项React Scan 的公开 API 见 react-scan README主要有三种传选项的方式任选其一即可scan(options)命令式启动扫描useScan(options)Hook 方式setOptions(options)在运行时修改选项例如你已经import react-scan/auto自动启动后再动态调整safeArea。下面两条是最常用的主路径。方式一入口处直接传推荐import { scan } from react-scan; scan({ enabled: process.env.NODE_ENV development, safeArea: 60, // 数字四边都留 60px把工具栏从角落移开 });方式二只在某一侧避开对象写法如果只有右边有一个别的开发叠加层只把工具栏往左推即可其余边保持默认import { scan } from react-scan; scan({ enabled: process.env.NODE_ENV development, safeArea: { right: 60 }, // 只调整右边top/bottom/left 仍为默认 24 });对象里四个键top、right、bottom、left全部可选未写的边不会受影响。取值规则与非法值会被怎样处理safeArea的取值在 校验逻辑 中检查合法值有两类一个有限、非负的数字——例如0、24、96。一个普通对象其中top/right/bottom/left任意组合每个键的值都必须是有限非负数字。对象里值为undefined的边会被忽略。以下写法会被判为非法依据 测试用例负数例如-1、{ right: -10 }NaN、Infinity、-Infinity字符串例如24注意不能传字符串形式的数字数组例如[10, 20, 30, 40]数组不是普通对象会被拒绝null、undefined。当某个值非法时parseSafeAreaOption会返回一条错误信息选项解析流程 会把它推进errors数组并输出到控制台错误文案是固定的- safeArea must be a non-negative number or { top?, right?, bottom?, left? }. Got 你传入的值如果对象里某一边的值非法则报更精确的一条- safeArea.right must be a non-negative number. Got 该边的值这里你传入的值/该边的值是占位说明控制台实际会打印你传入值的JSON.stringify结果。看到这两条报错就说明safeArea没被接受工具栏会用回默认内边距继续工作你需要按上面的取值规则改掉传值。结果验证怎么确认它生效运行时工具栏用safeArea计算自己的边界逻辑在 位置计算它把safeArea的四个边分别作为左、右、上、下的约束工具栏的宽度和位置都被限制在「视口减去 safeArea 各边」的范围内并在四个角和边之间拖动/停靠。也就是说传safeArea: 60后工具栏四个方向都不会进入离视口边缘 60px 以内的区域传safeArea: { right: 60 }后只有右边约束变成 60px其余边仍是默认 24px。验证方式在浏览器里打开开发页面观察工具栏的停靠位置——它应该明显比之前更靠里与那个占据角落的其他开发叠加层之间留出间距不再压在一起。若间距不够就再调大对应的边或那个数字。一个运行时调整的小例子如果 React Scan 已经通过import react-scan/auto之类的方式自动启动你不想改入口也可以在运行时用setOptions覆盖safeAreaimport { setOptions } from react-scan; // 页面加载后根据当前是否有别的角落叠加层来调整 setOptions({ safeArea: { top: 60, left: 60 } });这属于可选分支如果你能在入口处直接传Options用方式一更简单。限制safeArea只影响工具栏相对视口边缘的留白用于避让同样停在角落的其他开发叠加层它不会移动那些叠加层本身。对象写法只覆盖你显式给出的边没写的边回落到默认 24px而不是 0。非法值负数、字符串、数组、NaN/Infinity等不会让工具栏报错崩溃而是被校验拒绝并打印上文提到的控制台错误工具栏退回默认内边距。如果你调整safeArea后工具栏位置仍不符合预期先确认控制台没有上面那两条safeArea相关错误没有错误时就按边逐侧增大数值直到与其他叠加层之间留出足够间距。选项定义见 Options 类型运行时如何把单个数字或对象展开成四边见 getSafeArea。【免费下载链接】react-scanScan and fix React performance issues项目地址: https://gitcode.com/GitHub_Trending/re/react-scan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考