📜  ReactJS 纯组件(1)

📅  最后修改于: 2023-12-03 15:19:46.197000             🧑  作者: Mango

ReactJS 纯组件

ReactJS 是一个流行的 JavaScript 库,用于构建用户界面。其中,纯组件是 ReactJS 中最基础的组件之一。相对于“状态组件”,它更容易被理解和维护,并且可以在 ReactJS 应用程序中提供更好的性能。本文将介绍 ReactJS 纯组件的概念、使用方法和技巧。

什么是 ReactJS 纯组件?

ReactJS 纯组件是一种纯函数(Pure Function)组件。在 ReactJS 中,每个组件都是一个函数,用于接收输入(props)并呈现输出(UI 元素)。纯组件与普通组件的区别在于,它们的输出仅仅依赖于输入,即相同的输入始终会产生相同的输出。这种特性使得 ReactJS 可以比较容易地进行优化。

如何定义 ReactJS 纯组件?

我们可以使用函数定义 ReactJS 纯组件。这些组件通常要求遵循一些规则:

  • 仅使用输入 (props) 呈现 UI 元素;
  • 避免在组件内部改变任何状态或输入;
  • 不会发出 AJAX 请求或进行其他有副作用的操作。

以下是一个 ReactJS 纯组件的示例:

function PureButton(props) {
  return <button onClick={props.onClick}>{props.label}</button>;
}

这个组件仅接收两个属性:一个 onClick 回调和一个 label 文本。它的输出是一个带有标签的按钮,点击可以触发回调功能。

如何使用 ReactJS 纯组件?

ReactJS 纯组件的使用方式与普通组件相似。我们可以在 JSX 语法中像这样使用:

function App() {
  return <PureButton onClick={() => alert('Hello, World!')} label="Click me" />;
}

这个示例创建了一个 App 组件,并在其内部使用了 PureButton 组件。当点击按钮时,它会通过 alert() 显示 "Hello, World!"。

如何优化 ReactJS 纯组件?

ReactJS 纯组件自带某些性能优势,但仍然可以进行一些进一步的优化。

useMemo()

我们可以使用 useMemo() 钩子扩展 ReactJS 纯组件的性能。这个钩子可以记忆计算的结果,并在输入改变时进行更新,避免了不必要的计算。例如,我们可以在上面的示例中使用:

function PureButton(props) {
  const label = useMemo(() => `Pure ${props.label}`, [props.label]);
  return <button onClick={props.onClick}>{label}</button>;
}

这段代码使用 useMemo() 钩子记忆了计算结果,避免了在每次渲染时重复计算 "Pure "。

React.memo()

React.memo() 是 ReactJS 提供的一个高阶函数,用于将组件包装为纯组件。这个函数将比较输入 (props) 是否改变,并决定是否进行更新。例如,我们可以使用 React.memo() 将上述组件包装为纯组件:

const PureButton = React.memo(function PureButton(props) {
  return <button onClick={props.onClick}>{props.label}</button>;
});

使用纯组件可以提高 ReactJS 应用程序的性能和可维护性。然而,我们需要遵循一些规则,并了解如何优化组件以获得最佳效果。