FumadocsZDecode
React

React 无状态组件

无状态组件是一个纯函数:接收 props,返回 React 元素,不持有内部 state、无生命周期方法、无副作用。

function Welcome({ name }: { name: string }) {
  return <h1>Hello, {name}</h1>
}

一、核心特点

  • 只依赖 props,不使用 state
  • 没有生命周期方法
  • 不使用 this
  • 相同输入永远得到相同输出(可预测)

二、常见使用场景

场景说明
展示型组件纯 UI 渲染,数据完全由父组件传入
列表项每项结构相同,仅数据不同
基础 UIButton、Tag、Avatar 等原子组件
布局组件Header、Footer、Sidebar 等容器结构

三、代码示例

展示型组件:

function UserInfo({ name, email }: { name: string; email: string }) {
  return (
    <div>
      <p>Name: {name}</p>
      <p>Email: {email}</p>
    </div>
  )
}

列表项:

function ListItem({
  title,
  description,
}: {
  title: string
  description: string
}) {
  return (
    <li>
      <h3>{title}</h3>
      <p>{description}</p>
    </li>
  )
}

四、性能优化

无状态组件渲染开销小,配合 React.memo 可避免父组件更新时的不必要重渲染:

import { memo } from 'react'

const Button = memo(function Button({
  label,
  onClick,
}: {
  label: string
  onClick: () => void
}) {
  return <button onClick={onClick}>{label}</button>
})

memo 对 props 做浅比较,props 不变则跳过渲染。


五、总结

无状态组件本质是纯函数,只接收 props、返回 JSX,不含 state 和生命周期。适合展示型组件、原子 UI 组件等场景。可配合 React.memo 做性能优化,避免无效重渲染。

On this page