千家信息网

React中的render什么时候执行过程

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了React中的render什么时候执行过程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们都知道Render在组件
千家信息网最后更新 2026年11月03日React中的render什么时候执行过程

这篇文章主要介绍了React中的render什么时候执行过程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

我们都知道Render在组件实例化和存在期时都会被执行。实例化在componentWillMount执行完成后就会被执行,这个没什么好说的。在这里我们主要分析存在期组件更新时的执行。

存在期的方法包含:

  1. - componentWillReceiveProps

  2. - shouldComponentUpdate

  3. - componentWillUpdate

  4. - render

  5. - componentDidUpdate

这些方法会在组件的状态或者属性发生发生变化时被执行,如果我们使用了Redux,那么就只有当属性发生变化时被执行。下面我们将从几个场景来分析属性的变化。

首先我们创建了HelloWorldComponent,代码如下所示:

import * as React from "react";class HelloWorldComponent extends React.Component {  constructor(props) {    super(props);  }  componentWillReceiveProps(nextProps) {    console.log('hello world componentWillReceiveProps');  }  render() {    console.log('hello world render');    const { onClick, text } = this.props;    return (          );  }}HelloWorldComponent.propTypes = {  onClick: React.PropTypes.func,};export default HelloWorldComponent;

AppComponent组件的代码如下:

class MyApp extends React.Component {   constructor(props) {    super(props);    this.onClick = this.onClick.bind(this);  }  onClick() {    console.log('button click');    this.props.addNumber();  }  render() {    return (          )  }}const mapStateToProps = (state) => {  return { count: state.count }};const mapDispatchToProps = {  addNumber};export default connect(mapStateToProps, mapDispatchToProps)(MyApp);

这里我们使用了Redux,但是代码就不贴出来了,其中addNumber方法会每次点击时将count加1。

这个时候当我们点击button时,你觉得子组HelloWorldComponent的render方法会被执行吗?


如图所示,当我们点击button时,子组件的render方法被执行了。可是从代码来看,组件绑定的onClick和text都没有发生改变啊,为何组件会更新呢?

如果在子组件的componentWillReceiveProps添加这个log:console.log('isEqual', nextProps === this.props); 输出会是true还是false呢?


是的,你没有看错,输出的是false。这也是为什么子组件会更新了,因为属性值发生了变化,并不是说我们绑定在组件上的属性值。每次点击button时会触发state发生变化,进而整个组件重新render了,但这并不是我们想要的,因为这不必要的渲染会极其影响我们应用的性能。

在react中除了继承Component创建组件之外,还有个PureComponent。通过该组件就可以避免这种情况。下面我们对代码做点修改再来看效果。修改如下:

class HelloWorldComponent extends React.PureComponent

这次在点击button时发生了什么呢?


  

虽然componentWillReceiveProps依然会执行,但是这次组件没有重新render。

所以,我们对于无状态组件,我们应该尽量使用PureComponent,需要注意的是PureComponent只关注属性值,也就意味着对象和数组发生了变化是不会触发render的。

感谢你能够认真阅读完这篇文章,希望小编分享的"React中的render什么时候执行过程"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

组件 属性 变化 代码 方法 篇文章 时候 更新 过程 实例 状态 分析 输出 好说 必要 没什么 这不 价值 兴趣 只有 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 互联网科技巨头监管 互联网科技公司税收优惠 网络科技有限互联网 麻工互联网科技 安控科技rtu产品工业互联网 互联网科技项目计划书材料类 互联网金融科技名词解释 区块链结合互联网科技 美国互联网科技实力 山东星卡互联网科技有限公司官网 富国互联网科技002692 半导体行业属于互联网高科技类吗 信承诺互联网科技有限公司 云南互联网科技学费 互联网科技大佬云集 河南商务圈互联网科技有限公司 科技互联网专业务虚会材料 安徽九吞吴互联网科技有限公司 互联网高科技绘画 互联网科技工作委员会副主任毛军 智网互联网科技 上海致骋互联网科技 米客互联网科技 互联网科技英文翻译 智帮互联网科技公司最近动向 从那以后互联网科技有限公司 济南小医互联网科技有限公司招聘 中国科技和美国互联网 美国五大互联网科技公司市值多少
0