0

0

增强 React 列表渲染:干净且可重用的模式

DDD

DDD

发布时间:2024-09-18 08:18:01

|

1218人浏览过

|

来源于dev.to

转载

增强 react 列表渲染:干净且可重用的模式

作为 react 开发人员,我们都遇到过需要渲染数据列表的场景。虽然 .map() 方法效果很好,但每次渲染列表时重复相同的逻辑可能会让人筋疲力尽,并导致代码重复。幸运的是,有一种更干净、可扩展的方法来处理这个问题,使用可重用组件、高阶组件或自定义挂钩。

在本文中,我将分享一种改进 react 中列表渲染的方法,确保您的代码保持 dry、可重用且更易于维护。

主要问题:重复的.map()逻辑

假设您正在为电子商务应用程序构建仪表板。仪表板包含多个列表:最近订单、最畅销产品、用户评论等。您需要使用 .map() 函数呈现每个列表。这是一个典型的例子:

const orders = [...]; // array of order data

return (
  <>
    {orders.map((order, index) => (
      
    ))}
  
);

现在,您可以看到每个列表都重复 .map() 逻辑,类似的代码使您的组件变得混乱。这就是可重复使用的模式可以派上用场的地方。

解决方案:可重用的listcomponent

为了避免重复 .map() 逻辑,我们可以创建一个可重用的 listcomponent 来抽象映射逻辑,并允许我们根据数据渲染不同的组件。

function listcomponent({ data, renderitem }) {
  return (
    <>
      {data.map((item, index) => renderitem(item, index))}
    
  );
}

用法:

 (
    
  )} 
/>

在此模式中:
renderitem:定义每个项目应如何渲染的函数

通过传递不同的 renderitem 函数,我们可以为任何列表重用 listcomponent。这会产生一个干净、可重用的组件,减少重复的 .map() 逻辑。

更灵活:高阶组件(hoc)

如果多个组件需要列表渲染,让我们通过创建一个高阶组件进一步采用此模式。 hoc 允许通过附加功能增强任何组件 - 在本例中为列表渲染。

function withlistrendering(wrappedcomponent) {
  return function listwrapper({ data, ...props }) {
    return (
      <>
        {data.map((item, index) => (
          
        ))}
      
    );
  };
}

用法:

const enhancedordercomponent = withlistrendering(ordercomponent);

// now render the component with any data array

通过使用 withlistrendering hoc 包装 ordercomponent,我们自动添加了列表渲染行为,而无需修改原始组件。这种模式使代码保持模块化。

对于 hook 爱好者:用于列表渲染的自定义 hook

react hooks 提供了一种封装逻辑的函数式方法。如果您更喜欢使用钩子,这里是使用自定义钩子渲染列表的示例。

Axiom
Axiom

Axiom是一个浏览器扩展,用于自动化重复任务和web抓取。

下载
function uselistrenderer(data, renderitem) {
  return data.map((item, index) => renderitem(item, index));
}

用法:

function ordersdashboard({ orders }) {
  const orderlist = uselistrenderer(orders, (order, index) => (
    
  ));

  return <>{orderlist};
}

这种方法将 .map() 逻辑移动到钩子中,使渲染逻辑与组件的结构分开。这是保持组件精简并专注于演示的另一种方法。

现实场景:电子商务仪表板

让我们将此模式应用到现实场景中。想象一下,您正在构建一个电子商务管理仪表板,其中需要呈现多个订单、产品、评论等列表。

使用 listcomponent 方法,您可以呈现如下所示的订单列表:

 (
    
  )} 
/>

当我们需要渲染不同的列表(例如产品)时,可以通过不同的 renderitem 函数重用相同的 listcomponent:

 (
    
  )} 
/>

无需重写 .map() 逻辑 - 只需使用不同的数据和组件重用 listcomponent 即可。这使得代码库在增长时更易于维护。

结论:干净、可重用且可扩展的代码

可重用的 listcomponent 模式通过抽象重复的 .map() 逻辑来简化 react 列表渲染。无论您喜欢使用基本组件方法、hoc 还是自定义挂钩,此模式都可确保代码干净且可重用。

构建具有多个列表的 react 组件,请考虑使用其中一种模式来使组件专注于表示,同时将列表逻辑分离出来。

您发现 react 中还有哪些其他有用的可重用模式?请在评论中告诉我! 最后感谢您的阅读

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

36

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

60

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

40

2025.11.27

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

29

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号