微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何:修复ReactJS类型错误-无法读取未定义的属性'map'

如何解决如何:修复ReactJS类型错误-无法读取未定义的属性'map'

使用material-ui标头组件,我遇到了这个错误

我应该怎样看才能进行调试?再次专注于Web开发,并竭尽所能。

TypeError: Cannot read property 'map' of undefined


src/Components/Header.js:53


  50 |     Sign up
  51 |   </Button>
  52 | </Toolbar>
> 53 | <Toolbar component="nav" variant="dense" className={classes.toolbarSecondary}>
     | ^  54 |   {sections.map((section) => (
  55 |     <Link
  56 |       color="inherit"

解决方法

要调试此错误,请查看错误:Cannot read property 'map' of undefined
JavaScript告诉您某个地方(堆栈跟踪通常告诉您在哪一行),您试图读取map对象的属性undefined
看看这个片段,它会抛出相同的错误:

let sections; // sections= undefined
sections.map();
// Uncaught TypeError: Cannot read property 'map' of undefined

map()是来自Array.prototype的函数,这意味着您需要在数组上调用它:

const sections = [1,2,3];
sections.map(...);
// works,because sections is an array.

要更详细地说明您的代码,sections变量是未定义的,而不是您可能期望的数组。
您可以做的事情之一:

  1. 使用Conditional Rendering模式:

    sections && sections.map(...)

  2. 将节初始化为空数组。

两者都可能起作用。确定哪种是最适合您的解决方案。

,

或者您可以使用可选的javascript链接 link

sections?.map

即使节未定义,也不会引发错误。

,

这是因为在渲染时sections是未定义的(可能是由于异步行为)。您可以使用三元运算符-

来解决此问题

condition ? truthy expression : falsy expression

{ sections.length ? sections.map((section) => <Link color="inherit" ...
   : <p class="errorMsg"> No sections can be displayed. </p>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。