javascript - 在 React 中返回 array.map() 的最佳方式?
问题描述
我对 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 更明智,因为我们在父组件中拥有所有数据和绑定,这使得它更加结构化并且对子组件的绑定需求更少。
抱歉,如果我仍然缺少一些词汇来为有经验的 React 开发人员更好地解释这一点 - 但我希望我已经清楚地说明了这一点。
感谢您抽出宝贵的时间!
解决方案
由于 react 是基于组件的,因此您应该将 props 分组到它所属的组件中。选项 2 没有多大意义,因为您有一个 ItemList 组件,它接受项目列表并显然呈现和维护该列表。Item 组件特定于一个项目,不应该知道其他项目。此外,使用选项 1,您可以将项目列表与实际项目分离。
更好的方法是让父组件呈现一组子项。
推荐阅读
- bash - 如何在 Bash 脚本中使用 Kubernetes Secret
- python-3.x - 使用数据框的散景水平分组条形图
- entity-framework - Efcore 2.2- where 子句在选择后运行并返回错误结果
- javascript - 无法从其他模块或领域使用 GraphQLSchema
- php - 如何在迁移中使用内部联接更新 Laravel 数据库
- c# - 当 WindowState 设置为最大化时,部分表单会消失
- web - 如何以图形方式选择自己网站之外的页面上的元素
- javascript - 使用 Angular 7 滚动水平活动项目
- java - 如何避免 .getSelectedFile() 过早选择?
- xaml - 当 ItemSource 只是一个 List 时如何自定义 TextCell
?