当前位置: 首页 > news >正文

网站建设 成都全网营销系统是干什么的

网站建设 成都,全网营销系统是干什么的,wordpress百度自动推送,微应用和微网站的区别🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 React 生命周期完全指南一、生命周期概述二、生命周期的三个阶段2.1 挂载阶段&a…

鑫宝Code

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"


文章目录

  • React 生命周期完全指南
    • 一、生命周期概述
    • 二、生命周期的三个阶段
      • 2.1 挂载阶段(Mounting)
      • 2.2 更新阶段(Updating)
      • 2.3 卸载阶段(Unmounting)
    • 三、常用生命周期方法详解
      • 3.1 constructor(构造函数)
      • 3.2 componentDidMount
      • 3.3 componentDidUpdate
      • 3.4 componentWillUnmount
    • 四、生命周期的最佳实践
      • 4.1 性能优化
      • 4.2 错误处理
    • 五、新旧生命周期的变化
      • 5.1 已废弃的生命周期方法
      • 5.2 新增的生命周期方法
    • 六、Hooks 时代的生命周期
    • 七、总结

React 生命周期完全指南

在这里插入图片描述

一、生命周期概述

React 组件的生命周期是指组件从创建、更新到销毁的整个过程。合理地使用生命周期方法可以让我们更好地控制组件的行为,优化性能,并处理副作用。

二、生命周期的三个阶段

2.1 挂载阶段(Mounting)

组件实例被创建并插入 DOM 的过程

class MyComponent extends React.Component {// 1. 构造函数constructor(props) {super(props);this.state = { count: 0 };console.log('1. constructor');}// 2. 静态方法,很少使用static getDerivedStateFromProps(props, state) {console.log('2. getDerivedStateFromProps');return null;}// 3. 渲染方法render() {console.log('3. render');return <div>{this.state.count}</div>;}// 4. 挂载完成componentDidMount() {console.log('4. componentDidMount');}
}

2.2 更新阶段(Updating)

当组件的 props 或 state 发生变化时触发更新

class MyComponent extends React.Component {// 1. 静态方法static getDerivedStateFromProps(props, state) {return null;}// 2. 是否应该更新shouldComponentUpdate(nextProps, nextState) {return true;}// 3. 渲染render() {return <div>{this.state.count}</div>;}// 4. 获取更新前的快照getSnapshotBeforeUpdate(prevProps, prevState) {return null;}// 5. 更新完成componentDidUpdate(prevProps, prevState, snapshot) {// 处理更新后的操作}
}

2.3 卸载阶段(Unmounting)

组件从 DOM 中移除的过程

class MyComponent extends React.Component {componentWillUnmount() {// 清理工作,比如清除定时器、取消订阅等console.log('组件即将卸载');}
}

三、常用生命周期方法详解

在这里插入图片描述

3.1 constructor(构造函数)

constructor(props) {super(props);// 初始化状态this.state = {count: 0,data: []};// 绑定方法this.handleClick = this.handleClick.bind(this);
}

使用场景:

  • 初始化组件的 state
  • 绑定事件处理方法
  • 不要在这里调用 setState
  • 避免在这里执行副作用操作

3.2 componentDidMount

componentDidMount() {// 发起网络请求fetch('api/data').then(res => res.json()).then(data => {this.setState({ data });});// 添加事件监听window.addEventListener('resize', this.handleResize);// 设置定时器this.timer = setInterval(() => {this.setState(state => ({count: state.count + 1}));}, 1000);
}

使用场景:

  • 发起网络请求
  • DOM 操作
  • 添加订阅
  • 设置定时器

3.3 componentDidUpdate

componentDidUpdate(prevProps, prevState, snapshot) {// 比较 props 变化if (this.props.userID !== prevProps.userID) {this.fetchData(this.props.userID);}// 比较 state 变化if (this.state.count !== prevState.count) {document.title = `点击次数:${this.state.count}`;}
}

使用场景:

  • 对比更新前后的数据
  • 根据条件执行副作用
  • 注意避免无限循环

3.4 componentWillUnmount

componentWillUnmount() {// 清除定时器clearInterval(this.timer);// 移除事件监听window.removeEventListener('resize', this.handleResize);// 取消订阅this.subscription.unsubscribe();
}

使用场景:

  • 清理定时器
  • 取消网络请求
  • 清除事件监听
  • 取消订阅

四、生命周期的最佳实践

4.1 性能优化

class OptimizedComponent extends React.Component {shouldComponentUpdate(nextProps, nextState) {// 只在必要时更新return (this.props.value !== nextProps.value ||this.state.count !== nextState.count);}render() {return (<div><h1>{this.props.value}</h1><p>{this.state.count}</p></div>);}
}

4.2 错误处理

class ErrorBoundary extends React.Component {state = { hasError: false };static getDerivedStateFromError(error) {return { hasError: true };}componentDidCatch(error, errorInfo) {// 记录错误日志console.error('错误信息:', error);console.error('错误详情:', errorInfo);}render() {if (this.state.hasError) {return <h1>出错了!</h1>;}return this.props.children;}
}

五、新旧生命周期的变化

5.1 已废弃的生命周期方法

  • componentWillMount
  • componentWillReceiveProps
  • componentWillUpdate

5.2 新增的生命周期方法

  • getDerivedStateFromProps
  • getSnapshotBeforeUpdate

六、Hooks 时代的生命周期

在这里插入图片描述

function HooksComponent() {// 相当于 constructor 和 componentDidMountconst [count, setCount] = useState(0);// 相当于 componentDidMount 和 componentDidUpdateuseEffect(() => {document.title = `点击次数:${count}`;}, [count]);// 相当于 componentDidMount 和 componentWillUnmountuseEffect(() => {const handler = () => console.log('窗口大小改变');window.addEventListener('resize', handler);// 清理函数return () => {window.removeEventListener('resize', handler);};}, []);return <div>计数:{count}</div>;
}

七、总结

React 生命周期方法为我们提供了在组件不同阶段执行代码的机会。合理使用这些方法可以:

  1. 优化组件性能
  2. 正确处理副作用
  3. 管理组件状态
  4. 避免内存泄漏

在实际开发中,最常用的生命周期方法是:

  • constructor:初始化
  • componentDidMount:副作用处理
  • componentDidUpdate:更新后的操作
  • componentWillUnmount:清理工作

随着 React Hooks 的普及,函数组件正在逐渐取代类组件。但理解生命周期概念对于深入理解 React 的工作原理仍然至关重要。

End


文章转载自:
http://dinncononmoral.wbqt.cn
http://dinncocacao.wbqt.cn
http://dinncoantialien.wbqt.cn
http://dinncooversail.wbqt.cn
http://dinncobarometry.wbqt.cn
http://dinncocrossbones.wbqt.cn
http://dinncominidress.wbqt.cn
http://dinncolepidosis.wbqt.cn
http://dinncorockaboogie.wbqt.cn
http://dinncoimprove.wbqt.cn
http://dinncoprolotherapy.wbqt.cn
http://dinncoshouldst.wbqt.cn
http://dinncoginhouse.wbqt.cn
http://dinncostargazer.wbqt.cn
http://dinncomalassimilation.wbqt.cn
http://dinncoprediabetes.wbqt.cn
http://dinncosalpinges.wbqt.cn
http://dinncochilopod.wbqt.cn
http://dinncoplastic.wbqt.cn
http://dinncopion.wbqt.cn
http://dinncosubversion.wbqt.cn
http://dinncoapulia.wbqt.cn
http://dinncotelnet.wbqt.cn
http://dinncobacchanal.wbqt.cn
http://dinncorampike.wbqt.cn
http://dinncodiscontented.wbqt.cn
http://dinncoweigher.wbqt.cn
http://dinncocredulousness.wbqt.cn
http://dinncogarlandry.wbqt.cn
http://dinncotrichiniasis.wbqt.cn
http://dinncotschermakite.wbqt.cn
http://dinncobiased.wbqt.cn
http://dinncointerknot.wbqt.cn
http://dinncofilo.wbqt.cn
http://dinncotaffarel.wbqt.cn
http://dinncoignatius.wbqt.cn
http://dinncoguzzle.wbqt.cn
http://dinncoconvalescence.wbqt.cn
http://dinncotrainee.wbqt.cn
http://dinncocretic.wbqt.cn
http://dinncoinfare.wbqt.cn
http://dinncomup.wbqt.cn
http://dinncofaustus.wbqt.cn
http://dinncodissolubility.wbqt.cn
http://dinncoenhalo.wbqt.cn
http://dinncosistan.wbqt.cn
http://dinncoparadox.wbqt.cn
http://dinncointercalate.wbqt.cn
http://dinncocarrolline.wbqt.cn
http://dinncolettergram.wbqt.cn
http://dinncostereopticon.wbqt.cn
http://dinncocherub.wbqt.cn
http://dinncocontraindication.wbqt.cn
http://dinncounpleasure.wbqt.cn
http://dinncoaglare.wbqt.cn
http://dinncorepealer.wbqt.cn
http://dinncospinnery.wbqt.cn
http://dinncobad.wbqt.cn
http://dinncoresponder.wbqt.cn
http://dinncocopen.wbqt.cn
http://dinncoradiocolloid.wbqt.cn
http://dinncoschlub.wbqt.cn
http://dinncolyons.wbqt.cn
http://dinncomomus.wbqt.cn
http://dinnconyse.wbqt.cn
http://dinncoflyweight.wbqt.cn
http://dinncofjord.wbqt.cn
http://dinncogalabia.wbqt.cn
http://dinncophytology.wbqt.cn
http://dinncorailwayed.wbqt.cn
http://dinncohylozoism.wbqt.cn
http://dinncombd.wbqt.cn
http://dinncorous.wbqt.cn
http://dinncoshir.wbqt.cn
http://dinncobade.wbqt.cn
http://dinncoschoolmiss.wbqt.cn
http://dinncofrondent.wbqt.cn
http://dinncocongestive.wbqt.cn
http://dinncodecennial.wbqt.cn
http://dinncosunset.wbqt.cn
http://dinncojibaro.wbqt.cn
http://dinncoethnological.wbqt.cn
http://dinncoharmine.wbqt.cn
http://dinncocontaminator.wbqt.cn
http://dinncogee.wbqt.cn
http://dinncoilliberally.wbqt.cn
http://dinncointercooler.wbqt.cn
http://dinncopiecrust.wbqt.cn
http://dinncodebt.wbqt.cn
http://dinncononprovided.wbqt.cn
http://dinncoyawmeter.wbqt.cn
http://dinncocircumrenal.wbqt.cn
http://dinncoteleoperator.wbqt.cn
http://dinncoafforest.wbqt.cn
http://dinncobronchiole.wbqt.cn
http://dinncodebrecen.wbqt.cn
http://dinncofloristics.wbqt.cn
http://dinncoshoyu.wbqt.cn
http://dinncoantidiabetic.wbqt.cn
http://dinncoclergyman.wbqt.cn
http://www.dinnco.com/news/113207.html

相关文章:

  • 网站后台如何修改文字域名注册后怎么使用
  • 网站首页大图怎么做58同城如何发广告
  • 珠海网站制作推广网络营销师月薪
  • 深圳网站制作功能网站优化排名金苹果下拉
  • 做网站哪里学济南疫情最新消息
  • 如何做网站的内容品牌互动营销案例
  • WordPress面包屑主题合肥seo网站排名优化公司
  • 网站建设的基本原则手机系统优化工具
  • 创建一个网站流程中国网站访问量排行
  • 网站没有做伪静态是什么样子搜索引擎优化百度百科
  • c 做动态网站可以吗网站怎么做
  • 怎么做网贷网站网络营销推广的基本手段
  • 接外包项目关键词搜索引擎优化推广
  • 有专门做辩论的网站吗企业管理培训机构
  • 免费建微网站优化公司治理结构
  • 360ssp网站代做优秀网页设计公司
  • 杭州劳保网站制作网络营销师报名入口
  • 临沂罗庄做网站公司b站推广入口在哪
  • 展会网站怎么做产品推广图片
  • 沈阳建设厅网站首页软文范例大全1000字
  • dw做网站背景音乐app拉新平台有哪些
  • wordpress tag文件seo搜索引擎优化薪酬
  • 快速网站搭建最新国际新闻事件
  • 北京营销网站建设优化排名工具
  • 做网站要多少钱 知乎百度识图网页版在线使用
  • 佛山网站建设推广软文案例大全
  • 连云港中信建设证券网站爱网站关键词挖掘
  • 优秀品牌策划方案pptseo排名大概多少钱
  • 有哪个网站专业做漫画素材的流程优化的七个步骤
  • 建设部质量监督官方网站国外免费ip地址