代码运行提示map is not function错误,跳转传参逻辑如何排查?
报错原因及解决方法
map is not a function 是调用map的变量不是数组类型导致的,结合你提供的代码,具体原因和修复方案如下:
- 语法不完整:你贴出的渲染代码缺少闭合标签、三元表达式的 fallback 分支、map方法的闭合括号,首先要补全语法结构。
- 校验逻辑不严谨:你只判断了
sample.length !==0,如果运行时sample被赋值为非数组类型(比如undefined、null、普通对象),调用length和map都会报错,要先校验变量是不是数组类型。 - 变量作用域冲突:map回调的参数名和外层的
sample变量重名,可能导致作用域混乱取值异常。
修复后的代码示例
// 若sample是从接口/状态取值,初始化时一定要给默认空数组,避免初始值为undefined const sample = [ { path: "/website", par: { abc: "234", def: "567", ghi: "8910" } } ]; // 渲染部分修改为 {Array.isArray(sample) && sample.length ? ( sample.map((item, index) => ( {/* 注意给循环项加唯一key,避免react告警 */} <Menu.Item key={index}> <Link to={{ pathname: item.path, search: createURL(item) }} > Sample </Link> </Menu.Item> )) ) : null}
- 如果修改后还是报错,直接在调用map前打印
console.log(typeof sample, sample),就能直接看到sample的实际类型,排查哪里给sample错误赋值了非数组值。
内容的提问来源于stack exchange,提问作者Saranya Chowdary
相关产品推荐
相关产品推荐

