场景:子组件不进行任何操作,但父组件操作更新将会导致子组件也进行了重新更新

解决重复渲染组件方式:

  • shouldComponentUpdate
  • PureComponent
  • memo  只可以是纯函数

场景代码如下: ComponentTemplate组件每次执行点击事件都将会重新渲染Template组件

import React, { Component, } from 'react'
class Template extends Component {render() {console.log('是否重复执行')return null}
}
export default class ComponentTemplate extends Component {state = {count: 0}render() {return (<div><button onClick={() => {this.setState({ count: this.state.count + 1 })}}>按钮</button><Template name='abc' /></div>)}
}

 解决不重复渲染方式1 shouldComponentUpdate

import React, { Component, } from 'react'
class Template extends Component {shouldComponentUpdate(nextProps, nextStatus) {if (nextProps.name === this.props.name) {return false}return true}render() {console.log('是否重复执行')return null}
}
export default class ComponentTemplate extends Component {state = {count: 0}render() {return (<div><button onClick={() => {this.setState({ count: this.state.count + 1 })}}>按钮</button><Template name='abc' /></div>)}
}

解决不重复渲染方式2 PureComponent

  1. 缺点1 :只能数据层级1层 例如传入的数据是object,更改object.key内的数据将失效
  2. 缺点2 :函数传入将失效,除非使用类属性
import React, { Component, PureComponent } from 'react'
class Template extends PureComponent {render() {console.log('是否重复执行')return null}
}
export default class ComponentTemplate extends Component {state = {count: 0}//callback = () => {  类属性//}render() {return (<div><button onClick={() => {this.setState({ count: this.state.count + 1 })}}>按钮</button><Template name='abc' />      {/* <Template name='abc' callback={() => { }} /> 将会重复渲染*/}</div>)}
}

解决不重复渲染方式3 仅可以是纯函数使用 memo组件不重复执行 当子组件接收值未变化则不重新渲染

import React, { Component, memo } from 'react'
const Template = memo(function Template(props) {console.log('是否重复执行')return <div>{props.name}</div>
})
export default class ComponentTemplate extends Component {state = {count: 0}callback = () => {}render() {return (<div><button onClick={() => {this.setState({ count: this.state.count + 1 })}}>按钮</button><Template name='abc' callback={this.callback()} /></div>)}
}

react 组件渲染控制相关推荐

  1. 安装inde.html使用babel,reactjs – 使用Babel Standalone进行单个React组件渲染,仅使用index.html和Component...

    Noob与React在这里.我正在玩React.我有一个简单的组件在我的component.js中呈现.它包含在我的index.html文件中.我在头部包含了React,ReactDOM和babel的 ...

  2. 不挂载 组件渲染_让你的 React 组件性能跑得再快一点「实践」

    作者:天泽 转发链接:https://www.zoo.team/article/react-render 性能和渲染(Render)正相关 React 基于虚拟 DOM 和高效 Diff 算法的完美配 ...

  3. React组件——类组件

    一.组件的概念 使用组件的方式进行编程,可以提高开发效率,提高组件的复用性.提高代码的可维护性和可扩展性 React定义组件的方式有两种 类组件:React16.8版本之前几乎React使用的都是类组 ...

  4. react 组件连动效果_记一个缓动水柱React动画组件的初次尝试

    写完意识到这是第一篇,算是前言吧... 以后在zhihu写点东西...就当是博客好了,个人观点和体会而已,不求高大上,但求回头看的时候能够让以后的自己瞧不起. 背景:写React也一年多了,从一开始的 ...

  5. react学习笔记(二)编写第一个react组件

    继续上一节课的内容,打开App.js:会看到如下代码: import React, { Component } from 'react'; //在此文件中引用React,以及reat的组件类 impo ...

  6. react页面数据过多怎么办_性能!!让你的 React 组件跑得再快一点,收藏

    性能和渲染(Render)正相关 React 基于虚拟 DOM 和高效 Diff 算法的完美配合,实现了对 DOM 最小粒度的更新.大多数情况下,React 对 DOM 的渲染效率足以我们的业务日常. ...

  7. react避免子组件渲染_如何与React一起使用正确的方法来避免一些常见的陷阱

    react避免子组件渲染 One thing I hear quite often is "Let's go for Redux" in our new React app. It ...

  8. 深入了解React组件重新渲染的条件和生命周期

    React组件rerender的真正条件 当前组件的State中的属性改变时且当前组件的shouldcomponentupdate返回true,那么当前组件会rerender 组件的props中的任一 ...

  9. React- jsx的使用可以渲染html标签 或React组件

    React 的 JSX 使用大.小写的约定来区分本地组件的类和 HTML 标签.既渲染html标签需要使用小写字母开头的标签名而渲染本地React组件需要使用大写字母开头的标签名 注意: 由于 JSX ...

最新文章

  1. 【OpenCV】读取csv文件
  2. ik查看分词器:request body or source parameter is required/ missing authentication credentials for REST
  3. 用好String、String[]和char[]真香(洛谷P1179题题解,Java语言描述)
  4. jQuery控件简易日历表格
  5. php的数据结构_php数据结构有哪些
  6. opencv matlab配置,Matlab下运行c++程序的配置(包含opencv的c++程序)
  7. ZooKeeper官方文档学习笔记04-ZooKeeper的Java实例
  8. Part 3 —— 发布 Go Modules
  9. JavaScript文档对象模型DOM节点概述(1)
  10. Linux kernel中网络设备的管理
  11. 都说 Linux 是吃内存大户,可你知道具体是哪些进程吃掉了吗?
  12. ifv播放器android 版,ifv格式播放器
  13. ROS2与C++入门教程-进程内(intra_process)话题发布和订阅演示
  14. 2020_TKDE_DiffNet++_A Neural Influence and Interest Diffusion Network for Social Recommendation
  15. 数据库的挂起(suspending)和恢复(resuming)
  16. 计算机类部分核心期刊说明
  17. android egl使用方法,Android EGL
  18. 为什么说90%以上的创业者都在亏钱?
  19. NonlinearFactorGraph.h/NonlinearFactorGraph.cpp
  20. SMART 关键指标解析, 如何通过解读 SMART 信息预测硬盘故障

热门文章

  1. VSS2005使用方法
  2. anchor机制讲解
  3. Qt之图片自适应QLabel的大小
  4. 射频卡读写原理及实现
  5. Python制作爱心跳动代码,这就是程序员的烂漫吗
  6. swing-组件tooltip测试及美化
  7. BorderStyle short usage
  8. python凤凰新闻数据分析(四)整合
  9. 必须得会的汽车ECU研发基础--ECU软件架构概览3
  10. 内核提速开机linux,Linux系统开机提速我有招!