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

相关推荐
取名不易19 分钟前
vue-drawer-board 简单的画图功能
前端
学习指针路上的小学渣36 分钟前
JavaScript笔记
前端·javascript
取名不易36 分钟前
在 nuxtjs中通过fabric.js实现画图功能
前端
冰珊孤雪1 小时前
Android Studio Panda革命性升级:内存诊断、构建标准化与AI调试全解析
android·前端
coder_Eight1 小时前
彻底吃透 Promise:从状态、链式到手写实现,再到 async/await 底层原理
javascript·面试
用户806138166591 小时前
避免滥用“事件总线”
前端
Xiaoke1 小时前
我终于搞懂了 Event Loop(宏任务 / 微任务)
前端
@大迁世界1 小时前
13.在 React 中应怎样正确更新 state?
前端·javascript·react.js·前端框架·ecmascript
终端鹿1 小时前
Suspense 异步组件与懒加载实战
前端·vue.js
清风细雨_林木木1 小时前
CSS 报错:css-semicolonexpected 解决方案
前端·css