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纯组件的使用的更多相关文章

  1. 移动web端的react.js组件化方案

     背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...

  2. react创建组件的几种方式及其区别

    react创建组件有如下几种方式 ①.函数式定义的无状态组件 ②.es5原生方式React.createClass定义的组件   ③.es6形式的extends React.Component定义的组 ...

  3. React创建组件的三种方式及其区别

    内容转载于http://www.cnblogs.com/wonyun/p/5930333.html React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归; 具体的三种方式: ...

  4. beeshell —— 开源的 React Native 组件库

    介绍 beeshell 是一个 React Native 应用的基础组件库,基于 0.53.3 版本,提供一整套开箱即用的高质量组件,包含 JavaScript(以下简称 JS)组件和复合组件(包含 ...

  5. React中组件间通信的方式

    React中组件间通信的方式 React中组件间通信包括父子组件.兄弟组件.隔代组件.非嵌套组件之间通信. Props props适用于父子组件的通信,props以单向数据流的形式可以很好的完成父子组 ...

  6. Griddle, griddle-react 一个REACT 表格组件

    Griddle, griddle-react 一个REACT 表格组件: http://griddlegriddle.github.io/Griddle/index.html

  7. React Native组件之Text

    React Native组件之Text相当于iOS中的UILabel. 其基本属性如下: /** * Sample React Native App * https://github.com/face ...

  8. React Native组件之Switch和Picker和Slide

    React Native组件Switch类似于iOS中的UISwitch:组件Slide类似于iOS中UIslider,组件Picker类似于iOS的UIPickerView.他们的使用方法和相关属性 ...

  9. reactjs入门到实战(七)---- React的组件的生命周期

    React的组件的生命周期有三个状态分别是:挂载(生产组件示例化.准备挂载到页面.挂载到页面).更新(更新值.更新DOM).和卸载(卸载后). >>>其他     getInitia ...

  10. React Native 组件之TextInput

    React Native 组件之TextInput类似于iOS中的UITextView或者UITextField,是作为一个文字输入的组件,下面的TextInput的用法和相关属性. /** * Sa ...

随机推荐

  1. git 全局用户名改为英文,中文生成的git记录文件 不能有中文,现场反馈 git config user.name

    设置用户名和邮箱 git config --global user.name "username" git config --global user.email useremail ...

  2. 关于vue.js:iview-Bug-5114在iview的Poptip气泡提示内调用DatePicker出现遮挡或同时关闭窗口等冲突问题[转]

    转自:https://lequ7.com/guan-yu-vuejsiviewbug5114-zai-iview-de-poptip-qi-pao-ti-shi-nei-diao-yong-datep ...

  3. nginx四层和七层负载的配置

    四层负载和七层负载是两种不同类型的负载均衡策略,它们分别在网络的不同层次上工作.在Nginx中,这两种负载均衡策略可以通过配置nginx.conf文件来实现. 四层负载(L4 Load Balanci ...

  4. KTL 一个支持C++14编辑公式的K线技术工具平台

    K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...

  5. jquery之ajax中文乱码解决方案

    $.ajax({ dataType : 'json',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: ...

  6. Java取当前时间的一分钟后,并格式化输出

    1.Java1.8 以前 Calendar instance = Calendar.getInstance();//获取当前日期时间 instance.add(Calendar.MINUTE,1);/ ...

  7. View事件机制分析

    目录介绍 01.Android中事件分发顺序 1.1 事件分发的对象是谁 1.2 事件分发的本质 1.3 事件在哪些对象间进行传递 1.4 事件分发过程涉及方法 1.5 Android中事件分发顺序 ...

  8. System design summary

    system design https://github.com/donnemartin/system-design-primer Performance vs scalability scalabi ...

  9. 基于Python代码的相关性热力图,VIF共线性诊断图及残差四图的使用及解释

    注:热力图和共线性诊断图易看易解释,这里不再阐述 残差四图(Residuals vs Fitted Plot,Normal Q-Q Plot,Scale-Location Plot,Cook's Di ...

  10. Oracle存储过程模板

    PROCEDURE proc_test(p_id IN NUMBER, v_cur OUT SYS_REFCURSOR, p_result_code OUT NUMBER, p_result_mess ...