未捕获的TypeError:无法在react中读取未定义的属性'map'

时间:2018-10-15 09:40:19

标签: reactjs ecmascript-6

我正在使用ReactJs并将map放入map内,但是在c.children中使用map函数的地方却出现了此错误

{c.description}工作正常。但是我无法绘制c.children。

JSON:

参考:http://prntscr.com/l68aqt

apiData:http://prntscr.com/l68dyk

代码:

<div className="side-tab">
              { apiData !== false &&
              apiData.data.map(((c) => (<div>
                {c.description}
                {
                  c.childrens.map(i => (
                    <ProductTab />
                  ))
                }
              </div>)
              ))
              }
            </div>

2 个答案:

答案 0 :(得分:1)

尝试一下:

  <div className="side-tab">
    {apiData && apiData.data && apiData.data.map(c => (
        <div>
          {c.description}
          {c.childrens && c.childrens.map(i => (
            <ProductTab />
          ))}
        </div>
      ))}
  </div>

答案 1 :(得分:1)

您正在未定义的属性中调用map函数。这意味着c.childrens未定义。如果您看到自己的数据,则apiData中的某些项目具有属性childrens,而其他项目则没有(“培训和认证”和“工具”没有)。解决方案是在调用map函数之前检查它们是否未定义。

检查c.childrens是否未定义,或是否具有值:

c.childrens && c.childrens.map

c.childrens && c.childrens.length > 0 && c.childrens.map

因此您的代码将如下所示:

<div className="side-tab">
    {apiData !== false &&
        apiData.data.map(((c) => (<div>
            {c.description}
            {
             c.childrens && c.childrens.length > 0 && c.childrens.map(i => (
                <ProductTab />
              ))
            }
          </div>)
          ))
          }
        </div>