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 来表达,只是依赖数组的不同决定了它模拟哪一个生命周期。

相关推荐
Web4Browser1 分钟前
Headless 浏览器自动化适合哪些任务?巡检、截图和提交动作要分级
运维·前端·自动化
用户059540174465 分钟前
把前端内存泄漏排查从2小时压到5分钟,我们把它集成进了CI
前端·css
WindfallSheng43 分钟前
从Vibe Coding到Spec Coding:一套可落地的AI-SDD企业级研发实战工程
javascript·vue.js
Asize1 小时前
Agent 入门:从 LLM 与 Agent 的区别到 Function Calling
javascript·人工智能
申君健24864182772021 小时前
Vapor 核心数据结构:Block原理
前端
Csvn1 小时前
工程化专题 | 改完组件保存,浏览器毫无反应,重启 dev server 又好了——气不气?
前端
我有满天星辰1 小时前
Vue 指令完全指南:从 Vue 2 到 Vue 3 的演进与实战
前端·javascript·vue.js
光影少年1 小时前
RN 渲染原理:不依赖WebView,原生控件渲染
前端·react native·react.js·前端框架
小白学过的代码1 小时前
# flv.js / mpegts.js 播不了国标摄像头(H.265 + G.711A)?纯前端 Jessibuca 无后端方案(附完整代码)
前端·javascript·h.265
console.log('npc')2 小时前
AI Agent 前端流式渲染核心技术文档(SSE \+ WebSocket \+ 打字机渲染)
前端·人工智能·websocket