iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何应用 SOLID 原则在 React 中整理代码之开闭原则
  • 255
分享到

如何应用 SOLID 原则在 React 中整理代码之开闭原则

2024-04-02 19:04:59 255人浏览 独家记忆
摘要

目录本系列其他文章什么是开闭原则?让我们从一个例子开始一个糟糕的解决方案解决方案是什么?让我们创建单独的用户组件注意总结 SOLID 是一套原则。它们主要是关心代码质量和可维护性的软

SOLID 是一套原则。它们主要是关心代码质量和可维护性的软件专业人员的指导方针。

React 不是面向对象,但这些原则背后的主要思想可能是有帮助的。在本文中,我将尝试演示如何应用这些原则来编写更好的代码。

在前一篇文章中,我们讨论了单一责任原则。今天,我们将讨论 SOLID 的第二个原则: 开闭原则。

本系列其他文章

如何应用 SOLID 原则在 React 中整理代码之单一原则

什么是开闭原则?

Robert c. Martin 认为这个原则是面向对象设计最重要的原则。但他不是第一个定义这个概念的人。Bertrand Meyer 于 1988 年在他的《面向对象软件构造》一书中写到了这一点。他解释了开放/封闭原则:

软件实体(类、模块、功能等)应该对扩展开放,但对修改关闭。

这个原则告诉您以这样一种方式来编写代码,即您能够在不更改现有代码的情况下添加其他功能。

让我们看看我们在哪里可以应用这个原则。

让我们从一个例子开始

假设我们有一个 User 组件,其中我们传递用户的详细信息,这个类的主要目的是显示该特定用户的详细信息。

这是一个很简单的开始。但是我们的生活并不是那么简单。几天后,我们的经理告诉我们系统中有三种类型的用户: SuperAdminAdmin 等等。

它们每个都有不同的信息和功能。

一个糟糕的解决方案

第一个也是显而易见的解决方案:在组件中包含一个条件,并根据不同的用户类型呈现不同的信息。

import React from 'react';
export const User = ({user}) => {
    return <>
        <div> Name: {user.name}</div>
        <div> Email: {user.email}</div>
        {
            user.type === 'SUPER_ADMIN' &&
            <div> Details about super admin</div>
        }
        {
            user.type === 'ADMIN' &&
            <div> Details about admin</div>
        }
    </>
}

你知道这里出了什么问题吗?

首先,我们的代码现在是凌乱的。

其次,如果我们需要其他类型的用户怎么办?

然后,我们需要进入 User.js,为特定类型的用户添加另一个条件。

这明显违反了开闭原则,因为我们不允许更改 User 组件内部的代码。

解决方案是什么?

在这个场景中我们可以应用两种主要的技术:

  • 高阶组件(HOC)
  • 组件组合(Component composition)

在可能的情况下,最好采用第二种方法,但是在某些情况下,有必要使用 HOC。

现在,我们将使用 Facebook 推荐的一种技术,称为组件组合

让我们创建单独的用户组件

现在,我们需要以这样一种方式设计代码,即不需要在 User.js 组件中添加条件。让我们为 SuperAdmin 创建一个单独的组件:

import React from 'react';
import {User} from "./User";
 
export const SuperAdmin = ({user}) => {
 
    return <>
        <User user={user} />
        <div> This is super admin user details</div>
    </>
}

类似地,另一个是针对 Admin 用户的:

import React from 'react';
import {User} from "./User";
export const Admin = ({user}) => {
    return <>
        <User user={user} />
        <div> This is admin user details</div>
    </>
}

现在我们的 App.js 文件变成了:

import React from 'react';
import Admin from './Admin'
import SuperAdmin from './SuperAdmin'
export default function App = () =>{
  const user = {}
  const userByTypes = {
    'admin' : <Admin /> ,
    'superadmin' : <SuperAdmin />
  }
  return <div>
    {userByTypes[`${user.type}`]}
  <div/>
}

现在我们可以根据需要创建尽可能多的用户类型。我们针对特定用户的逻辑是封装的,因此我们不需要为了任何额外的修改而重新检查代码。

有些人可能会说,我们正在不必要地增加文件数量。当然,您可以暂时保持原样,但是随着应用程序的复杂性增加,您肯定会感到痛苦。

注意

SOLID 是一套原则。它们并不是强制性的,您必须应用于每个场景。作为一个经验丰富的开发人员,您应该在代码长度和可读性之间找到一个很好的平衡。

要过分执着于这些原则。事实上,有一句名言可以解释这些情况:

Too Much SOLID

所以知道这些原则是好的,但是你必须保持平衡。对于一个或两个额外的字段,您可能不需要这些组合,但是将它们分开肯定会有长远的帮助。

总结

了解这些原则会让你走很长的路,因为在一天结束的时候,一段好的代码才是最重要的,而且没有单一的方法来做事情。

到此这篇关于如何应用 SOLID 原则在 React 中整理代码之开闭原则的文章就介绍到这了,更多相关React SOLID 原则 开闭原则内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 如何应用 SOLID 原则在 React 中整理代码之开闭原则

本文链接: https://www.lsjlt.com/news/164306.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何应用 SOLID 原则在 React 中整理代码之开闭原则
    目录本系列其他文章什么是开闭原则?让我们从一个例子开始一个糟糕的解决方案解决方案是什么?让我们创建单独的用户组件注意总结 SOLID 是一套原则。它们主要是关心代码质量和可维护性的软...
    99+
    2024-04-02
  • 教你应用 SOLID 原则整理 React 代码之单一原则
    目录什么是单一责任原则?让我们从一个糟糕的例子开始1. 移动数据处理逻辑2. 可重用的数据获取钩子3. 分解 UI 组件让我们回顾一下我们刚刚做了什么总结SOLID 原则的主要是作为...
    99+
    2024-04-02
  • 在React中怎么应用SOLID原则
    本篇内容介绍了“在React中怎么应用SOLID原则”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、单一职责原则(SRP)单一职责原则的定...
    99+
    2023-07-02
  • react中怎么应用SOLID原则
    这篇文章主要介绍“react中怎么应用SOLID原则”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react中怎么应用SOLID原则”文章能帮助大家解决问题。什么是开闭原则?Robert c. Ma...
    99+
    2023-07-02
  • 在React中应用SOLID原则的方法
    目录1、单一职责原则(SRP)2、开放封闭原则(OCP)3、里氏替换原则(LSP)4、接口隔离原则(ISP)5、依赖倒置原则(DIP)6、小结在面向对象编程(OOP)中,SOLID ...
    99+
    2024-04-02
  • 如何应用SOLID原则
    本文小编为大家详细介绍“如何应用SOLID原则”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何应用SOLID原则”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是单一责任原则?单一责任原则告诉我们的是,每个...
    99+
    2023-07-02
  • 如何在Java开发中合理利用关键字提高代码质量?
    在Java开发中,关键字是非常重要的一部分。它们是Java语言的基础,用于定义变量、方法、类等等。在编写高质量的Java代码时,使用关键字是至关重要的。在本文中,我们将介绍如何在Java开发中合理利用关键字来提高代码质量。 使用fina...
    99+
    2023-08-05
    git 开发技术 关键字
  • 如何使用IDE和npm在Python开发中更好地管理代码库?
    随着 Python 开发的普及和代码库的扩大,如何更好地管理代码库成为了一个重要的话题。本文将介绍如何使用 IDE 和 npm 在 Python 开发中更好地管理代码库。 什么是 IDE? IDE(Integrated Developmen...
    99+
    2023-10-21
    npm path ide
  • Git在PHP和NumPy学习笔记中的应用:如何更好地组织和管理代码?
    随着越来越多的人开始学习编程,代码的管理和组织变得越来越重要。在这个过程中,Git成为了一个非常流行的版本控制工具,它可以帮助我们更好地组织和管理代码。在本文中,我们将介绍Git在PHP和NumPy学习笔记中的应用,以及如何更好地组织和管...
    99+
    2023-10-07
    numy 学习笔记 git
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作