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

相关推荐
北冥有一鲲8 分钟前
LangChain.js:Tool、Memory 与 Agent 的深度解析与实战
开发语言·javascript·langchain
Mintopia9 分钟前
静态内容页该用HTML还是Next.js展示更好
前端·html·next.js
LYFlied16 分钟前
【每日算法】LeetCode 226. 翻转二叉树
前端·算法·leetcode·面试·职场和发展
无名无姓某罗17 分钟前
jQuery 请求 SpringMVC 接口返回404错误排查
前端·spring·jquery
霁月的小屋21 分钟前
Vue响应式数据全解析:从Vue2到Vue3,ref与reactive的实战指南
前端·javascript·vue.js
李少兄25 分钟前
深入理解 Java Web 开发中的 HttpServletRequest 与 HttpServletResponse
java·开发语言·前端
holidaypenguin27 分钟前
antd 5 + react 18 + vite 7 升级
前端·react.js
小满zs29 分钟前
Next.js第十五章(Image)
前端·next.js
tangbin58308530 分钟前
iOS Swift 可选值(Optional)详解
前端·ios
孟祥_成都31 分钟前
nest.js / hono.js 一起学!日志功能/统一返回格式/错误处理
前端·node.js