学习如何轻松构建可伸缩的 React 应用程序:构建可伸缩的应用程序
在构建 React 应用程序时,总会有一些情况,您不希望重新渲染组件,除非某些 prop
或值发生了更改,或者达到了某些条件;这称为条件渲染。
下面是在 React 中进行条件渲染的几种方法:
三元运算符(Ternary operation)
{
condition ? <ComponentA /> : <ComponentB />;
}
与逻辑运算符 &&
(AND logical operation)
{
condition && <ComponentA />;
}
if-else
语句(If else operation)
if (condition) {
return <ComponentA />;
} else {
return <ComponentB />;
}
Memoization 是一种在编程中防止不必要的重新计算操作的方法。它有助于使应用程序更快,它在内存中缓存计算结果,并在需要时显示结果,而不是每次都重新计算。在 React 中,有两种主要的方式来实现记忆化,它们分别是:
useMemo
import React, { useMemo } from "react";
const Component = ({ propA, propB }) => {
const memoizedValue = useMemo(() => {
// 这里的代码只会在 propA 或 propB 发生变化时执行
return computeExpensiveValue(propA, propB);
}, [propA, propB]);
return <div>{memoizedValue}</div>;
};
useCallback
import React, { useCallback } from "react";
const Component = ({ propA, propB }) => {
const memoizedCallback = useCallback(() => {
return computeExpensiveValue(propA, propB);
}, [propA, propB]);
return <div onClick={memoizedCallback}>Click me</div>;
};
TypeScript 是 JavaScript 的一个超集。由于 TypeScript 是强类型的,因此有助于构建可扩展的应用程序。
要创建 React TypeScript 应用程序,我们使用以下命令:
npx create-react-app myapp –-template typescript
# vite
npm init @vitejs/app myapp --template react-ts
这里,myapp
是我们应用程序的名称,在命名应用程序时禁止使用任何大写字母。
TypeScript 具有一些优点,可以使您的应用程序具有可扩展性,包括以下内容:
React 灵活度很高,支持你用自己喜欢的方式组织代码,但如果您想实现一个好的应用程序,最好遵循一些最佳实践,更好为应用程序命名和组织文件和文件夹。
下面是一些建议的方式:
在软件开发中,关注点分离是将应用程序构建为不同的模块,每个模块只做一件事情或解决一个问题。这将使您的应用程序更加健壮和可扩展。
因此,假设我们有一个应用程序,其中有两个组件,即登录(Login)和注册(Register),以及一个调用 API 的组件。我们希望将这两个组件彼此分离,使它们可以独立工作,并完成它们创建的任务,即通过调用 API 登录和注册用户。
因此,我们可以将这些组件放在不同的文件夹中,如下所示:
src
├── components
│ ├── Login
│ │ ├── Login.js
│ │ ├── Login.css
│ │ └── Login.test.js
│ └── Register
│ ├── Register.js
│ ├── Register.css
│ └── Register.test.js
└── api
├── api.js
└── api.test.js
高阶组件是一个函数,它接受一个组件并返回一个新组件。
import React from "react";
const withHOC = (WrappedComponent) => {
const HOC = (props) => {
return <WrappedComponent {...props} />;
};
return HOC;
};
export default withHOC;
使用:
import React from "react";
import withHOC from "./withHOC";
const Component = (props) => {
return <div>{props.name}</div>;
};
export default withHOC(Component);
SOLID 原则是由 Robert Martin 于 2000 年编写的面向对象设计原则。
SOLID 代表以下内容:
这些原则是为对象设计而设计的,但它们也可以用于其他语言,例如 JavaScript。
让我们看看如何在 React.js 中使用 SOLID 原则:
单一职责原则(SRP)
开闭原则(OCP)
里氏替换原则(LSP)
Make
的类,它扩展到另一个名为 Car
的类,我们应该能够扩展类 Make
而不影响 Car
类的功能接口隔离原则(ISP)
props
props
在每个 React 应用程序中非常重要,当将这些 props
从父组件传递到子组件时,只应传递所需的内容,而不是所有 props
中的内容props
来实现这一点依赖反转原则(DIP)
import React, { useState } from "react";
function Display({ value }) {
return <div>{value}</div>;
}
function Button({ handleClick }) {
return <button onClick={handleClick}>Click me</button>;
}
function App() {
const [count, setCount] = useState(0);
function handleClick() {
setCount(count + 1);
}
return (
<div>
<Display value={count} />
<Button handleClick={handleClick} />
</div>
);
}
export default App;