页面一片空白,控制台报 Cannot read properties of undefined (reading ‘map’)。意思很明确:你在一个 undefined 上调用了 map,问题不在 map,而在数据没到就渲染了。
先定位是哪一行
点开报错堆栈的第一行,找到对应的解构或遍历语句。常见写法是 list.map 或 res.data.list.map,缺省值没给就上了。
三种真实来源
- 接口还没返回,初始状态是 undefined 而不是空数组
- 接口返回结构变了,比如多包了一层 data,路径取错
- 字段本身是 null,后端对空集合返回了 null 而不是 []
写法上先兜住
const list = res?.data?.list ?? []; return list.map(item => ...);
可选链加空值合并能挡住大部分场景,但不要用它掩盖问题。渲染前加一个加载态,数据没到就显示骨架屏,比事后加问号更可靠。
和后端约定空集合
接口返回空数据时统一给数组,别时而是 null 时而是 [],前端就不用到处写判断。这条约定写进接口文档,能减少一大类线上报错。
最后补一句,出错的那一行不一定是根因,往上翻两层调用,看看数据是在哪一步变成 undefined 的。
上线前给列表渲染加一个空状态,数据为空时显示提示而不是空白区域,用户和排查的人都少走弯路。