javascript - 循环 JS 对象仅适用于 return 语句,否则会抛出 undefined

标签 javascript reactjs ecmascript-6 jsx

JSX 中带有 return 语句的第一个方法可以正常工作

  <div>
    {this.state.list.map(item => {
      return <h6>{item.location.formattedAddress[0]}</h6>
    })}
  </div>

但这通常应该给出相同的结果:

 render() {
    const listItems = this.state.list.map((item, index) => (
        <h6>{item.location.formattedAddress[0]}</h6>
    ));
    return (
      {listItems}
    )
 }

TypeError: Cannot read property 'map' of undefined

它也是在加载页面时运行,而不是在执行从 API 加载数据的函数时运行,请有人协助

最佳答案

试试这个

<小时/>

这是第一个像你一样的方法:

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      list: [
        { id: 1, title: 'React' },
        { id: 2, title: 'Angular' },
        { id: 3, title: 'Vue' }
      ]
    };
  }
  render() {
    return (
      <div>
        {this.state.list && this.state.list.map(li => (
          <h2 key={li.id}>{li.title}</h2>
        ))}
      </div>
    );
  }
}
ReactDOM.render(<App />, document.getElementById('root'));
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root">
  <div>

<小时/>

这是您期望它起作用的第二种方法

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      list: [
        { id: 1, title: 'React' },
        { id: 2, title: 'Angular' },
        { id: 3, title: 'Vue' }
      ]
    };
  }
  render() {
    const listItems = this.state.list ? this.state.list.map(li => (
      <h2 key={li.id}>{li.title}</h2>
    )) : '';
    return <div>{listItems}</div>;
  }
}
ReactDOM.render(<App />, document.getElementById('root'));
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root"><div>

<小时/>

我在渲染之前添加了一些小检查,以确保您不会收到错误:无法读取未定义的属性“map”

关于javascript - 循环 JS 对象仅适用于 return 语句,否则会抛出 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52870392/

相关文章:

javascript - Eslint 规则在 import 中添加新行

javascript - 所见即所得文本编辑器在查询中显示不佳

javascript - 通过 axios 库方法设置状态后,Json 数据未在 ReactJS 类中呈现?

javascript - 减少 JavaScript 中的对象数组

javascript - 与 Aurelia 的属性(property)变更订阅

javascript - 如何在 ios 中的 html 文件中查找 div 标记的计数?

javascript - Angular 5 在路由器中使用 Angular cli 非延迟加载模块

javascript - 带有 react.js 的编译文件太大

reactjs - React Antd 模态属性 'children' 在类型 'IntrinsicAttributes & ModalProps' 上不存在

javascript - 用 Babel 扩展 MediaSource ——如何正确调用 super()?