javascript - 在 React 中返回 array.map() 的最佳方法?

标签 javascript reactjs

我对 React 有点陌生,正在观看一些视频教程,也正在阅读一些有关它的书籍。 (没有早于 2016 年的 - 因为它变化很大)

在我的旅程中,我通过了两种方法在 React 中执行 array.map() 循环。

<强>1。在父组件内执行 map 循环,并仅返回子组件中的元素

class ItemsList extends React.Component {
  render() {
    const items = this.props.items.map((item) =>(
      <Item
        id={item.id}
        title={item.title}
      />
  ));
    return (
      <div id='items'>
        {item}
      </div>
    );
  } //render
}

class Item extends React.Component {
  render() {
    return (
      <li key={this.props.id}>
          {this.props.title}
      </li>
    );
  } //render
}

<强>2。在子组件内部进行map循环,并将整体返回给父组件

class ItemsList extends React.Component {
  render() {      
      ));
        return (
          <div id='items'>
            <Item
            id={item.id}
            title={item.title}
            />
          </div>
        );
      } //render
}

class Item extends React.Component {
  render() {
    const item = this.props.items.map((item) =>(
      <li key={item.id}>
          {item}
      </li>
    ));
    return(item);
  }
}

如果我理解正确的话,React 的优点之一是它是一种更加“团队友好”的应用程序工作方式,因为每个人都可以一次处理一个组件,而不会真正干扰其他人的工作。

但基于此,我会选择选项2,因为我们尽可能少地接触父组件,而更多地关注子组件。

但我也相信选择选项 1 更明智,因为我们在父组件中拥有所有数据和绑定(bind),这使得子组件更加结构化并且更少的绑定(bind)需求。

很抱歉,如果我仍然缺少一些词汇来更好地向经验丰富的 React 开发人员解释这一点 - 但我希望我能清楚地说明这一点。

感谢您抽出宝贵的时间!

最佳答案

由于 React 是基于组件的,因此您应该将 props 分组到它所属的组件中。选项 2 没有多大意义,因为您有一个 ItemList 组件,它接受项目列表并显然呈现和维护该列表。 Item 组件特定于一个 项目,不应该了解其他项目。此外,使用选项 1,您可以将项目列表与实际项目解耦。

更好的方法是让父组件渲染子项的集合。

关于javascript - 在 React 中返回 array.map() 的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51705503/

相关文章:

javascript - Ionic 2 - 使用参数在页面之间导航(空白应用程序)

JavaScript 空数组

reactjs - 在一个 reducer 文件中导出多个变量 REDUX

reactjs - 带 TypeScript 的样式化组件 .attrs

javascript - reactjs render() 在 promise 解决后未触发 this.setState 被重新分配

javascript - forEach 循环中的 jQuery 动画

javascript - 让js多次火?

jquery - 当 img 不存在时使用 ReactJS 将其替换为空

javascript - React Typescript - 动态类型

javascript - 这是由于代码语法已更改而从语句更改为表达式的代码段的有效示例吗?