首页 > 编程语言 >使用可重用列表组件扩展 React 应用程序

使用可重用列表组件扩展 React 应用程序

时间:2024-09-22 08:52:10浏览次数:1  
标签:react const 重用 应用程序 列表 React 组件

在 react 中构建可扩展的应用程序需要的不仅仅是可靠的业务逻辑。随着应用程序的发展,组件的架构对于其可维护性、性能和灵活性起着重要作用。许多 web 应用程序中的基本任务之一是处理数据列表。无论是渲染产品列表、表格还是仪表板,您经常会遇到需要可重复和可重用的列表结构的场景。通过构建可重用的列表组件,您可以显着降低代码库的复杂性,同时提高可维护性和可扩展性。这篇博文将探讨如何在 react 中构建可重用的列表组件、为什么它对于扩展应用程序很重要,并提供大量代码示例来帮助指导您完成整个过程。为什么可重用性对于扩展 react 应用程序很重要可重用性是扩展 react 应用程序的关键。构建可重用的列表组件使您能够将通用逻辑和 ui 结构抽象为独立的组件,而不是重复代码来处理应用程序中的不同列表组件。这允许您的 react 组件模块化增长并防止代码重复,而代码重复可能会在您的应用程序扩展时导致潜在的错误和维护问题。通过创建可重用的组件,您可以传入各种道具来控制列表的渲染,从而使您的应用程序更加动态和灵活,而无需为每个用例重写相同的逻辑。这种方法不仅使您的应用程序具有可扩展性,还通过简化代码可读性和可维护性来增强开发人员体验。可重用列表组件的核心概念要构建可扩展的可重用列表组件,您需要了解几个 react 概念:props 和 state:它们分别允许您将数据传递到组件并控制组件的内部行为。数组方法:.map()、.filter() 和 .reduce() 等方法对于在 react 组件中转换数组至关重要。组合优于继承:在 react 中,组合模式优于继承。您可以通过组合较小的可重用组件来构建复杂的 ui。prop-driven ui:可重用的列表组件应该由 props 驱动。这允许您从父组件传递不同的数据、渲染逻辑甚至样式。示例 1:一个简单的可重用列表组件让我们首先创建一个简单的、可重用的列表组件,它可以接受项目数组作为 prop 并动态渲染它们:import react from 'react';const simplelist = ({ items }) =&gt; { return ( 登录后复制 {items.map((item, index) => ( {item} ))} );};export default simplelist;在此示例中,simplelist 接受一个 items 属性,它是一个数组。我们使用 .map() 函数迭代数组并渲染无序列表中的每个项目 ()。每个项目都包含在 元素中。 key 属性确保 react 可以在列表更改时有效地更新 dom。使用示例:import react from 'react';import simplelist from './simplelist';const app = () => { const fruits = ['apple', 'banana', 'orange', 'mango']; return ( <div> <h1>fruit list</h1> <simplelist items={fruits} /> </div> );};export default app;登录后复制此示例呈现基本的水果列表。该组件足够灵活,您可以将任何数据数组传递给它。增强列表组件的复用性虽然上面的例子很实用,但它非常有限。在现实应用程序中,您经常需要处理更复杂的需求,例如有条件地渲染列表项、应用自定义样式或向单个项目添加事件侦听器。让我们通过渲染属性允许自定义渲染逻辑,使 simplelist 更具可重用性。示例 2:使用 render props 进行自定义列表渲染渲染道具是 react 中的一种模式,允许您控制组件内渲染的内容。以下是如何使用此模式来允许自定义呈现列表项:const reusablelist = ({ items, renderitem }) => { return ( <ul> {items.map((item, index) => ( <li key={index}> {renderitem(item)} </li> ))} </ul> );};登录后复制在这种情况下,reusablelist 组件接受 renderitem 属性,它是一个接受项目并返回 jsx 的函数。这提供了一种灵活的方式来控制每个列表项的呈现方式。使用示例:const app = () => { const users = [ { id: 1, name: 'john doe', age: 30 }, { id: 2, name: 'jane smith', age: 25 }, ]; return ( <div> <h1>user list</h1> <reusablelist items={users} renderitem={(user) => ( <div> <h2>{user.name}</h2> <p>age: {user.age}</p> </div> )} /> </div> );};登录后复制在此示例中,renderitem 属性允许我们自定义每个用户的显示方式。现在我们可以为任何数据结构重用相同的列表组件,根据特定的用例渲染它。示例 3:使列表组件可通过高阶组件扩展react 中另一个强大的模式是高阶组件 (hoc)。 hoc 是一个函数,它接受一个组件并返回一个具有附加功能的新组件。例如,如果我们想通过数据获取或条件渲染等附加行为来增强 reusablelist,我们可以使用 hoc。const withloading = (component) => { return function withloadingcomponent({ isloading, ...props }) { if (isloading) return <p>loading...</p>; return <component {...props} />; };};登录后复制这里,withloading hoc 向任何组件添加加载行为。让我们将其应用到我们的 reusablelist 中:const enhancedlist = withloading(reusablelist);const app = () => { const [isloading, setisloading] = react.usestate(true); const [users, setusers] = react.usestate([]); react.useeffect(() => { settimeout(() => { setusers([ { id: 1, name: 'john doe', age: 30 }, { id: 2, name: 'jane smith', age: 25 }, ]); setisloading(false); }, 2000); }, []); return ( <div> <h1>user list</h1> <enhancedlist isloading={isloading} items={users} renderitem={(user) => ( <div> <h2>{user.name}</h2> <p>age: {user.age}</p> </div> )} /> </div> );};登录后复制在此示例中,withloading hoc 包装了 reusablelist,为其添加了加载状态管理。此模式通过使用附加逻辑增强组件而无需修改原始组件,从而促进代码重用。示例 4:带有 hooks 的高级列表组件使用 react hooks,我们可以通过将状态逻辑直接集成到组件中,将可重用列表组件提升到另一个层次。让我们构建一个可以处理分页的可重用列表。const usepagination = (items, itemsperpage) => { const [currentpage, setcurrentpage] = react.usestate(1); const maxpage = math.ceil(items.length / itemsperpage); const currentitems = items.slice( (currentpage - 1) * itemsperpage, currentpage * itemsperpage ); const nextpage = () => { setcurrentpage((prevpage) => math.min(prevpage + 1, maxpage)); }; const prevpage = () => { setcurrentpage((prevpage) => math.max(prevpage - 1, 1)); }; return { currentitems, nextpage, prevpage, currentpage, maxpage };};登录后复制usepagination 钩子封装了分页逻辑。我们现在可以在列表组件中使用这个钩子。const paginatedlist = ({ items, renderitem, itemsperpage }) => { const { currentitems, nextpage, prevpage, currentpage, maxpage } = usepagination( items, itemsperpage ); return ( <div> <ul> {currentitems.map((item, index) => ( <li key={index}>{renderitem(item)}</li> ))} </ul> <div> <button onclick={prevpage} disabled={currentpage === 1}> previous </button> <button onclick={nextpage} disabled={currentpage === maxpage}> next </button> </div> </div> );};登录后复制使用示例:const App = () => { const items = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`); return ( <div> <h1>Paginated List</h1> <PaginatedList items={items} itemsPerPage={10} renderItem={(item) => <div>{item}</div>} /> </div> );};登录后复制此示例演示了一个分页列表,用户可以在其中浏览项目页面。该钩子处理所有分页逻辑,使其可在不同组件之间重用。结论在 react 中构建可重用的列表组件是创建可扩展应用程序的基本实践。通过抽象通用逻辑,使用渲染道具、高阶组件和钩子等模式,您可以创建灵活、可扩展和可维护的列表组件,以适应不同的用例。随着 react 应用程序的增长,采用可重用组件不仅可以简化代码库,还可以增强性能、减少冗余并实现新功能的快速迭代。无论您是处理简单的列表还是更复杂的 ui 需求,投入时间创建可重用组件从长远来看都会得到回报。参考文献react 官方文档react 渲染道具反应高阶组件反应挂钩以上就是使用可重用列表组件扩展 React 应用程序的详细内容,更多请关注我的其它相关文章!

标签:react,const,重用,应用程序,列表,React,组件
From: https://www.cnblogs.com/aow054/p/18424846

相关文章

  • 【Ambari自定义组件集成】Bigtop编译大数据组件,看这一篇就够了
    快捷导航在正式内容之前,通过下方导航,大家可以快速找到相关资源:快捷导航链接地址备注相关文档-ambari+bigtop自定义组件集成https://blog.csdn.net/TTBIGDATA/article/details/142150086CSDN地址编译、开发、部署、集成解决方案https://t.zsxq.com/0PVcI知识星球源代码-Ambar......
  • 鸿蒙开发-Swiper(轮播图容器组件)
    Swiper组件提供滑动轮播显示的能力。Swiper本身是一个容器组件,当设置了多个子组件后,可以对这些子组件进行轮播显示。通常,在一些应用首页显示推荐的内容时,需要用到轮播显示的能力。针对复杂页面场景,可以使用Swiper组件的预加载机制,利用主线程的空闲时间来提前构建和布局绘制......
  • 鸿蒙开发项目中你是怎么理解生命周期?你知道的生命周期函数有那些, 说一下执行时机?(页面
    生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(页面)生命周期。#一、怎么理解生命周期?生命周期:简单点理解就是从创建到销毁的过程#二、你知道的生命周期函数有那些,说一下执行时机?自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用,可以调用组......
  • 【EasyBlog】基于React+AntD+NextJS+NestJS+MySQL打造的开源博客系统
    Github项目地址:https://github.com/fecommunity/easy-blog,欢迎Star。Easy-BlogEasy-Blog是一套集成文章发表、页面创建、知识库管理、博客后台管理等功能于一体的博客系统。首页-浅色主题首页-暗黑主题文章阅读后台管理✨特性......
  • Spring如何导入第三方组件:深入解析与实战指南
    Spring如何导入第三方组件:深入解析与实战指南在Spring框架中,导入第三方组件是一个常见的需求。无论是数据库驱动、消息队列客户端,还是其他第三方库,Spring都提供了多种方式来导入和管理这些组件。本文将深入探讨如何在Spring中导入第三方组件,帮助你更好地理解其工作原理及实......
  • 什么是反应? Reactjs 概念和术语概述
    什么是react?react是一个javascript库,用于构建用户界面,特别是单页应用程序(spa)。它允许开发人员创建可重用的组件来管理其本地状态并处理用户交互。react遵循单向数据流,这意味着数据从父组件流向子组件,从而促进更好地管理数据和ui状态。关键react术语和概念......
  • 了解如何在 <lines (Modulojs) 中创建 API 支持的 Zelda BOTW 怪物画廊 Web 组件
    模数教程回来了!大家好!暑假结束后,我带着modulo教程回来了。我正在制作更多教程-请继续关注。也就是说,如果您对我的下一个主题有任何特别的想法,请务必在评论中告诉我!我的上一篇教程是关于api驱动的pokémondanceparty组件的超级快速且有趣的“仅html,无js”教程,不到30......
  • 了解 React 的 useMemo:它的作用、何时使用它以及最佳实践
    react是一个用于构建用户界面的强大库,但随着应用程序的增长,您可能会注意到性能有时会成为问题。这就是像usememo这样的reacthook发挥作用的地方。在本文中,我们将深入探讨usememo的作用、何时有用以及使用它的最佳实践。我们还将介绍一些需要避免的常见陷阱。什么是......
  • 了解 JavaScript 中的高阶组件和高阶函数
    高阶函数高阶函数是一个函数,它要么接受另一个函数作为参数,要么返回一个函数作为结果。这个概念是函数式编程的基础,并允许强大的抽象。示例:functiongreet(name){return`hello,${name}!`;}functionsayhello(fn,name){returnfn(name);}console.log(sayhello(greet,'......
  • 了解 React Cache 功能
    随着react生态系统的不断扩大,优化数据获取的更强大的工具之一就是缓存功能。此内置功能允许您执行许多操作,例如有效管理和存储服务器数据、减少冗余网络请求以及提高整体应用程序性能。在本文中,我们将了解react中的缓存功能、它的好处以及如何使用它。什么是react缓存功......