React纯组件的使用
1. 有无必要使用纯组件
- 如果应用不是很大型,页面渲染效率使用纯组件与非纯组件差别不大,尽量使用组件
- 应用一定注意,setState时子组件依赖渲染的属性一定要传递给子组件,不然父组件setState之后,子组件接收到的props未变,子组件不会render
- 纯组件的比较是浅比较,引用地址未变,内部值发生变化并不会render,即使用问题2所指
- dva的connect会对组件也进行一个纯组件的处理
- 更多情况下使用需要看具体需求
2. 使用可能产生的问题
- 1). 如果子组件依赖于父组件的重新渲染,而进行重新渲染,纯组件会导致不渲染
- 2). 如果子组件依赖的数据只是内部数据变更,引用地址未变则会导致子组件不会重新渲染
// 父组件
export default class Parent extends Component {
state = {
Arr: [1]
}
changeArr = () => {
this.state.push(2)
this.setState(this.state)
}
render() {
return (
<div>
<Children Arr={Arr} />
<button onClick={this.changeArr}>修改Arr</button>
</div>
)
}
}
class Children extends Component {
render() {
const { Arr } = this.props
return <div>{Arr.map(item => item)}</div>
}
}
React纯组件的使用的更多相关文章
- 移动web端的react.js组件化方案
背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...
- react创建组件的几种方式及其区别
react创建组件有如下几种方式 ①.函数式定义的无状态组件 ②.es5原生方式React.createClass定义的组件 ③.es6形式的extends React.Component定义的组 ...
- React创建组件的三种方式及其区别
内容转载于http://www.cnblogs.com/wonyun/p/5930333.html React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归; 具体的三种方式: ...
- beeshell —— 开源的 React Native 组件库
介绍 beeshell 是一个 React Native 应用的基础组件库,基于 0.53.3 版本,提供一整套开箱即用的高质量组件,包含 JavaScript(以下简称 JS)组件和复合组件(包含 ...
- React中组件间通信的方式
React中组件间通信的方式 React中组件间通信包括父子组件.兄弟组件.隔代组件.非嵌套组件之间通信. Props props适用于父子组件的通信,props以单向数据流的形式可以很好的完成父子组 ...
- Griddle, griddle-react 一个REACT 表格组件
Griddle, griddle-react 一个REACT 表格组件: http://griddlegriddle.github.io/Griddle/index.html
- React Native组件之Text
React Native组件之Text相当于iOS中的UILabel. 其基本属性如下: /** * Sample React Native App * https://github.com/face ...
- React Native组件之Switch和Picker和Slide
React Native组件Switch类似于iOS中的UISwitch:组件Slide类似于iOS中UIslider,组件Picker类似于iOS的UIPickerView.他们的使用方法和相关属性 ...
- reactjs入门到实战(七)---- React的组件的生命周期
React的组件的生命周期有三个状态分别是:挂载(生产组件示例化.准备挂载到页面.挂载到页面).更新(更新值.更新DOM).和卸载(卸载后). >>>其他 getInitia ...
- React Native 组件之TextInput
React Native 组件之TextInput类似于iOS中的UITextView或者UITextField,是作为一个文字输入的组件,下面的TextInput的用法和相关属性. /** * Sa ...
随机推荐
- Zabbix“专家坐诊”第181期问答汇总
问题一 Q:大佬们,有没有基础的 监控模板 触发器分享下? A:你可以试一下乐维免费版(https://forum.lwops.cn/download ),里面基本的模板全齐. 问题二 Q :orab ...
- 基于C语言的串口AT指令发送实例解析
一 知识点 1 AI指令后面一定要加 \n\r 2 注意AT指令里面待双引号的这种,要使用斜杠隔开. 二 源码: void Set_Pdu_Mode(void) { u8 a = 1; if(atKe ...
- buu第一页复盘
这里就对之前第一遍没写出来的题目再写一次wp 写在之前 贴一下我的模块文件 from pwn import * from LibcSearcher import * from struct impor ...
- Linux查看用户的7个命令
Linux是中国IT实验室的一个技术频道.包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类 在Linux系统里,我们会经常用Linux查看用户的命令,在这里我们一些 ...
- RV1126编译过程
一.编译环境 1.目标系统:ubuntu 22.04 LTS 2.投屏器SDK下载: 链接:https://pan.baidu.com/s/1OJQafxm38FnbshMEu432Og 提取码:o6 ...
- Java22重磅发布!!!!卷不动了,真的卷不动了。。。。
就在3月19日,Java22重磅发布.Java22新增了12项增强功能,其中包括七个预览特性和一个孵化器特性,这些功能都显著到足以引起JDK增强提案(JEPs)的关注.它们涵盖了Java语言.其API ...
- RepPointsV2:更多的监督任务,更强的性能 | NIPS 2020
RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习.虽然在创新性上可能不够新颖,但论文的通用性还是很不错的,而且将角点任务的输出用于联合推理,从对比实验 ...
- 《梦断代码》(《Dreaming in Code》)读书笔记
<梦断代码>(<Dreaming in Code>)读书笔记 在看了这本书之后,我在豆瓣看到一段书评:做软件难.软件乃是人类自以为最有把握,实则最难掌控的技术.这本书揭示了好多 ...
- Bootstrap实战 - 单页面网站
一.介绍 单页面结构简单.布局清晰,常常用来做手机 App 或者某个产品的下载介绍页面.现在,展示型网页整体趋向于单页网站设计,这样一次性把核心信息展现出来,对于用户来说更加直观和简单,能够快速了解一 ...
- ubuntu环境下安装perf工具
检查当前环境内核的版本,执行如下命令: uname -a 输出信息如下: Linux jackie-ubuntu 5.4.0-26-generic #30-Ubuntu SMP Mon Apr 20 ...