React 最佳实践

2025-05-25

React 最佳实践

在本文中,我想分享一些需要注意的细节,这将使我们成为更好的 React 开发人员


将逻辑与 JSX 分离
  • 将逻辑(或功能部分)从 JSX 中分散出来总是好的,这样代码会更干净、更易于编辑,请查看下面的示例,了解如何处理 onClick 事件,而不是将其直接放在元素内部
import React from 'react';

function Todo() {
  let condition = true;

  const addHandler = () => {
    if (condition) {
      //do api call
    }
  }

  return (
    <div>
      <button
        onClick={() => addHandler()}
      >Add</button>
    </div>
  )
}

export default Todo;
Enter fullscreen mode Exit fullscreen mode
拆分成小组件并使其可重复使用
  • 在这一部分中,我们尝试从实际项目中分离出一个 UI 组件c5781d72c1298​​dc869b74702b4ee42a0
  1. NavBar:包含 HamBtn 的顶部导航栏容器
  2. HamBtn:3 条水平线按钮,可用于其他部分
  3. TodoRow:待办事项行,包含文本和其他操作按钮
  4. RadioBtn:切换按钮
  5. DeleteBtn:删除待办事项按钮
  6. 按钮:具有多个动态属性的通用按钮组件
  7. 容器:待办事项列表的整个容器。

所有这些都将是独立的组件,从长远来看这将对我们有帮助,如果项目变得更大,几乎所有组件都可以重复使用😎

状态管理(Redux 或 Context)
  • 在使用 Redux 库的情况下,我强烈建议使用 Sagas,它将帮助您进行异步 API 调用
    Redux:非常适合需要高频状态更新的大型应用程序

  • 对于 Context Api,它比 Redux 简单得多,您不需要下载任何库
    Context API:资源丰富,非常适合状态变化最小的小型应用程序

Hooks 和函数组件
  • 不再有“这个”
  • 更少的代码行
  • 调试、测试和重构更容易

我认为大多数开发人员已经在使用基于这两个的所有项目,但我只是想提一下😁

样式组件
  • Styled-Components 是在现代 JavaScript 中使用 CSS 的新方法之一
  • 它旨在成为 CSS 模块的后继者,一种编写 CSS 的方式,其范围仅限于单个组件,并且不会泄漏到页面上的任何其他元素
import React from 'react';
import { Text } from './SubTitle.styled';

function SubTitle() {
  return (
    <Text>Hello</Text>
  )
}
export default SubTitle;
Enter fullscreen mode Exit fullscreen mode
import styled from "styled-components";

export const Text = styled.span`
  color: #AAA;
  font-size: 20px;
`;
Enter fullscreen mode Exit fullscreen mode
测试
  • 单元测试 - (检查应用程序的单个组件,以获得更关键的功能)
  • 集成测试——(检查模块的不同部分是否协同工作)
  • 端到端测试 - (涉及从头到尾测试应用程序的工作流程,旨在复制真实的用户场景)
打字稿

TypeScript 是“可编译为纯 JavaScript 的类型化 JavaScript 超集”。

在 React 中使用 Typescript 将帮助你开发更稳定、强类型且集成速度更快的组件,让我们来看一个最简单的例子

interface Props {
  label: string;
  onClick: () => void;
}
Enter fullscreen mode Exit fullscreen mode
function Button({ label, onClick, ...props }: Props) {
  return (
    <button
      onClick={onClick}
      {...props}
    >
      {label}
    </button>
  )
}

export default Button;
Enter fullscreen mode Exit fullscreen mode

12345

固有元素:
固有元素在特殊接口 JSX.IntrinsicElements 上查找。默认情况下,如果未指定此接口,则一切正常,并且固有元素不会进行类型检查。但是,如果存在此接口,则会将固有元素的名称作为 JSX.IntrinsicElements 接口上的属性进行查找。

内在元素将允许我们使用元素的原生“props”

export type Props = JSX.IntrinsicElements["button"] & {
  label: string;
}
Enter fullscreen mode Exit fullscreen mode
<Button
  label={'SUBMIT'}
  onClick={() => console.log('CLICK')}
  onBlur={() => console.log('BLUR')}
/>
Enter fullscreen mode Exit fullscreen mode

React 是一个很棒的库,你可以拆分和组织你的代码,使其变得非常灵活和可扩展,希望保持它的简单和高级

希望它有用,就是这样😊

文章来源:https://dev.to/awedis/react-best-practices-4l4m
PREV
破解 AWS 认证:从初学者到专业人士的指南
NEXT
使用 MERN 堆栈的绝对力量构建项目案例研究应用程序🔥