javascript - 迭代 JSX 中对象内部的数组给出 undefined

标签 javascript json reactjs jsx

我正在从我的 API 获取数据:

  fetch('/api/p/' + project_id).then(res => res.json())
            .then((project) => {
                console.log(project)
                this.setState({ project })
            }
            );

项目结构是这样的:

{
 name: "project1",
comments: ["com1", "com2"]
}

现在在我的返回函数中,我需要循环遍历所有注释并在不同的行上谨慎地呈现它们,因此我使用了以下代码:

this.state.project.comments.map((comment) => {
           return (
               <p><i class="fas fa-chevron-right"></i> { comment } </p>
          );
 });

我收到此错误:

TypeError: Cannot read property 'map' of undefined

我尝试了map或forEach和for。而且我也无法获得它的长度,因为我得到了同样的错误。

但是如果我输入 this.state.project.comments 我会得到一行中的所有元素,没有空格,就像这样 comment1comment2comment3

最佳答案

您正在尝试对未定义的值进行.map。这可能是因为在 fetch 时未定义 this.state.project.comments,但 React 仍在尝试进行初始渲染。

确保在某处设置初始状态,例如

constructor() {
  super();

  this.state = { project: { comments: [] } };
}

或者,您可以在调用 .map 时直接给出默认值:

(this.state.project.comments || []).map((comment) => {

关于javascript - 迭代 JSX 中对象内部的数组给出 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59871285/

相关文章:

javascript - 显示每次在渲染时更新 onPress 的数组 - React Native

javascript - 商店更新时组件不会重新呈现 - Mobx

reactjs - Antd - validateFields 仅检查当前表单步骤

json - 尝试从bigquery上的一到多列中提取json值

javascript - Angular JS : unable to display value

javascript - 单击时更改 radio 输入值(实际上将其更改回来)

javascript - silverstripe-module yeoman 生成器中的 JS 意外 token 错误

objective-c - JSON 返回值在 Objective-C : iOS 中被错误解析

使用 XSLT 3.0 的 JSON 到 XML - 如何加载 JSON 源并调用 json-to-xml 函数?

javascript - 如何清除jquery列表框中的值