首页 > 其他分享 >React的生命周期

React的生命周期

时间:2022-12-06 19:34:50浏览次数:41  
标签:生命周期 dom 渲染 更新 React 重新 组件

React的生命周期中有常用的和不常用的。

常用的有:

1constructor(): 完成了数据的初始化。注意:只要使用了constructor()就必须写super(),否则this指向会出错。 -

2render(): render()函数会将jsx生成的dom插入到目标节点中。在每次组件更新时,react通过diff算法比较更新前和更新之后的dom节点,找到最小的有差异的dom位置并更新,花费最小的开销。

3componentDidMount(): 组件第一次渲染完成,此时dom节点已经生成,在这里调用接口请求,返回数据后使用setState()更新数据后重新渲染。

4 componentDidUpdate(prevProps,prevState): 组件更新完成。每次react重新渲染之后都会进入这个生命周期,可以拿到更新之前的props和state。

5componentWillUnmount(): 在这个生命周期完成组件的数据销毁和卸载,移除所有的定时器和监听。

不常用的有:

1 getDerivedStateFromProps(nextProps,prevState): 代替老版的componentWillReceiveProps()。官方将更新state与触发回调重新分配到了componentWillReceiveProps()中,让组件整体的更新逻辑更加清晰,并且在当前生命周期中,禁止使用this.props,强制让开发者们通过比较nextProps和PrevState去保证数据的正确行为。

2 shouldComponentUpdate(): return true可以渲染,return false不重新渲染。为什么会出现这个SCU生命周期?主要用于性能优化。也是唯一可以控制组件渲染的生命周期,在setState之后state发生改变组件会重新渲染,在当前生命周期内return false会阻止组件的更新。因为react中父组件重新渲染导致子组件也重新渲染,这时在子组件的当前生命周期内做判断是否真的需要重新渲染。

3 getSnapshotBeforeUpdate(prevProps,prevState): 代替componentWillUpdate(),核心区别在于getSnapshotBeforeUpdate()中读取到的dom元素状态是可以保证和componentDidUpdate()中的一致
————————————————

原文链接:https://blog.csdn.net/qq_41581588/article/details/127091980

标签:生命周期,dom,渲染,更新,React,重新,组件
From: https://www.cnblogs.com/xiaoeshuang/p/16960280.html

相关文章

  • Taro踩坑记之React-Native环境教程
    Taro踩坑记之React-Native环境教程LaxusJ关注0.9892019.07.2722:56:55字数424阅读10,841当前环境TaroCLI1.3.10environmentinfo:System:OS:macOS10.14.......
  • React的10种hook
    React目前提供的HookuseState设置和改变state,代替原来的state和setStateuseEffect代替原来的生命周期componentDidMount,componentDidUpdate和componentWillUnmount......
  • 客户生命周期流程设计
    需求:记录一个客户从注册到注销经历的各个生命周期节点,给与查询展示设计:1、生命周期节点分为以下几个流程:注册、授信、资料获取...(先开发部分流程,剩余用...表示)......
  • 在windows下导入react项目并且打包编译后部署到nginx上
     在windows下导入react项目并且打包编译后部署到nginx上一、安装npm二、创建react项目三、安装nginx四、总结最近接手了公司的一个django项目,这是应该前后端分......
  • React学习路上的绊脚石Router
    Routerreact-router:核心库react-router-dom:路由的软件包react-router-nattive:用于开发RN应用的绑定React-router-domHashRouter:http://xxx.com/#/aboutBrowserRou......
  • React Native基础与入门(一)--搭建开发环境
    什么是ReactNative?ReactNative是Facebook开源的一套用于开发移动端跨平台App的技术框架,其代码托管在GitHub上,目前已有一千多名参与者向它贡献代码。有兴趣的可以去查看源......
  • LLVM中指令的生命周期
    LLVM中指令的生命周期LLVM是一个复杂的软件。为了了解它的工作原理,人们可以采取几种方法,但都不简单。这里的目标是遵循“指令”在经过LLVM的多个编译阶段时的各种变化格......
  • React团队开发-样式冲突
    Cssmodule在React多人开发中css中的类肯定会发生冲突如果每个页面的样式文件加上.module(文件名.module.scss)那么就会避免冲突(原理是将模块的类和id后面会随机生成一......
  • ReactRouter-路由拦截
    路由拦截应用场景:鉴权,当用户进入到需要授权的组件时,这时候进行拦截,判断用户是否授权,如果授权则放行,正常跳转,如果非授权则重定向授权页面。举个栗子importReactfrom......
  • React反向代理-跨域
    反向代理目的:解决跨域问题在src目录下新建一个setupProxy.jsconst{createProxyMiddleware}=require('http-proxy-middleware');module.exports=function(......