React中Class 组件 vs Hooks 对照

1、Class 组件 vs Hooks 对照

类组件生命周期 Hooks 对应写法 说明
componentDidMount useEffect(() => { ... }, []) 组件挂载时执行一次
componentDidUpdate useEffect(() => { ... }, [deps]) 依赖项变化时执行
componentWillUnmount useEffect(() => { return () => {...} }, []) 卸载时执行清理逻辑

2、 示例代码

1. Class 组件写法

bash 复制代码
import React from 'react';

class Child extends React.Component {
  componentDidMount() {
    console.log("挂载完成 componentDidMount");
  }

  componentDidUpdate() {
    console.log("更新完成 componentDidUpdate");
  }

  componentWillUnmount() {
    console.log("卸载 componentWillUnmount");
  }

  render() {
    return <div>计数:{this.props.count}</div>;
  }
}

2. Hooks 写法(函数组件)

import React, { useEffect } from 'react';

function Child({ count }) {

// 模拟 componentDidMount + componentWillUnmount

useEffect(() => {

console.log("挂载完成 (相当于 componentDidMount)");

复制代码
return () => {
  console.log("卸载 (相当于 componentWillUnmount)");
};

}, \[\]); // 空依赖 → 只在挂载和卸载时运行

// 模拟 componentDidUpdate

useEffect(() => {

console.log("更新完成 (相当于 componentDidUpdate),count=", count);

}, count); // count 变化时触发

return
计数:{count}
;
}

3、总结

componentDidMount → useEffect(() => {...}, \[\])

componentDidUpdate → useEffect(() => {...}, 依赖)

componentWillUnmount → useEffect 的 清理函数

👉 所以在 Hooks 中,所有生命周期逻辑都通过 useEffect 来表达,只是依赖数组的不同决定了它模拟哪一个生命周期。

相关推荐
星星在线25 分钟前
MusicFree:一个「All in One」的个人音乐服务器,让听歌回归简单
前端·后端
IT_陈寒1 小时前
Redis的SETNX并发问题让我加了三天班
前端·人工智能·后端
demo007x2 小时前
Docling 文档转换以及技术架构分析
前端·后端·程序员
京东云开发者2 小时前
京东市民服务又“上新”!这次是黑龙江“龙易办”
前端
袋鱼不重3 小时前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
竹林8183 小时前
Web3表单签名验证:我用 wagmi 和 ethers 给 DApp 加了一个“免密登录”,踩坑记录全在这了
javascript
用户6990304848753 小时前
try catch使用场景 处理同步代码错误兼容用的
javascript·uni-app
雪碧聊技术3 小时前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
Fireworks3 小时前
深入vue3源码解读 -- 1、响应式的基础概念
前端
程序员黑豆3 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程