React-用ImmutableJS提高性能
一、需求
1.子组件有更新时,只重新渲染有变化的子组件,而不是全部
二、ImmutableJS原理


三、代码
1.CheckboxWithLabel.jsx
var React = require('react/addons');
var CheckboxWithLabel = React.createClass({
shouldComponentUpdate: function(nextProps, nextState) {
return nextProps.label !== this.props.label;
},
onChange: function() {
this.props.onChange(this.props.label.get("id"));
},
render: function() {
return (
<label>
{this.props.label.get("text")}
<input type = "checkbox" checked={this.props.label.get("checked")} onChange={this.onChange}/>
{this.props.label.get("checked") ? this.props.label.get("on") : this.props.label.get("off")}
</label>);
}
});
module.exports = CheckboxWithLabel;
2.SurveyList.jsx
var React = require('react/addons');
var Immutable = require('immutable');
var CheckboxWithLabel = require('./CheckboxWithLabel.jsx')
var SurveyList = React.createClass({
mixins: [React.addons.PureRenderMixin],
getInitialState: function() {
return Immutable.fromJS({
items: [
{
id: 0,
text: "你喜欢吃萝卜吗?",
on: "喜欢",
off: "不喜欢",
checked: false
},
{
id: 1,
text: "你喜欢吃西瓜吗?",
on: "喜欢",
off: "不喜欢",
checked: false
},
{
id: 2,
text: "你喜欢吃香蕉吗?",
on: "喜欢",
off: "不喜欢",
checked: false
}
]
});
},
onChange: function(labelId) {
var newState = this.state.setIn(["items", labelId, "checked"], !this.state.getIn(["items", labelId, "checked"]));
this.replaceState(newState);
},
render: function() {
var that = this;
return (
<div>
{
this.state.get("items").map(function(label) {
return <div><CheckboxWithLabel label={label} onChange={that.onChange.bind(that)}></CheckboxWithLabel></div>
})
}
</div>);
}
});
module.exports = SurveyList;
3.app.jsx
var React = require('react/addons');
var SurveyList = require('./SurveyList.jsx');
React.render(<SurveyList></SurveyList>, document.body);
Perf = React.addons.Perf;
四、运行结果

React-用ImmutableJS提高性能的更多相关文章
- ASP.NET MVC之如何看待内置配置来提高性能优化(四)
前言 前几篇我们比较基础的讲了下MVC中的知识,这一节我们穿插点知识,讲讲MVC中我们可以提高性能的办法. Razor视图引擎优化(优化一) 我们知道默认情况下配置MVC去解析一个视图会首先约定通过查 ...
- CSS性能分析,如何优化CSS提高性能
不负十年后的自己,共勉! 前端性能优化一直是一个比较热门的话题,我们总是在尽我们最大的努力去,提高我们的页面性能,比如减少HTTP请求,利用工具对资源进行合并压缩,脚本置底,避免重复请求,css sp ...
- 对于大批量赋值功能,使用if判断是否能提高性能
场景: 如果对某变量进行赋值,是否需要判断一下,如果相等就不用赋值,这样会不会提高性能. 代码如下: "; "; , x2=, x3=; Stopwatch w = new Sto ...
- Java编程提高性能时需注意的地方
1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面 第一,控制资源的使用,通过线程同步来控制资 ...
- 使用C# yield关键字来提高性能和可读性
对于”yield”这个关键字我已经见过N次了,直到最近我才知道这个关键字所蕴含的力量.我将在下面展示出一些使用”yield”让你的代码有更高可读性和更好性能的例子. 为了让你对yield有一些快速概览 ...
- 使用WITH AS提高性能简化嵌套SQL(转载)
使用WITH AS提高性能简化嵌套SQL http://www.cnblogs.com/fygh/archive/2011/08/31/2160266.html
- Java 编程:如何提高性能?(简单总结篇)
开发者在编程中除了要有编程规范,还要注意性能,在 Java 编程中有什么提高性能的好办法呢? 本文转自国内 ITOM 行业领军企业 OneAPM Cloud Insight(一款能够优雅监控多种操作系 ...
- 05_Smart-image通过SoftReference提高性能
文章导读: 文件介绍了常见的图片下载开源插件smart-image, 由于移动设备硬件受限,因此Android的相关app都要考虑到性能的关系, 所以很多的第三方插件都使用到了缓存cache技术,本人 ...
- FMDB官方使用文档-GCD的使用-提高性能(翻译)
FMDB官方使用文档-GCD的使用-提高性能(翻译) 发布于:2013-08-19 10:01阅读数:13395 由于FMDB是建立在SQLite的之上的,所以你至少也该把这篇文章从头到尾读一遍.与此 ...
- Java编程中提高性能的几点建议
尽量减少对变量的重复计算 如 for(int i=0;i<list.size();i++) 应该改为 for(int i=0,len=list.size();i<len;i++) 并且在循 ...
随机推荐
- python学习第四天第一部分
1.字典的特性:无序.去重.查询速度快.比list占用内存多. 2.字典查询速度快的原因:因为他是哈希类型的. 3.什么是(hash)哈希? hash把任意长度的二进制映射为较短的固定长度的二进制,这 ...
- 插值和空间分析(一)_探索性数据分析(R语言)
> library(lattice) > library(sp) > data(meuse) > coordinates(meuse) <- c("x" ...
- YARN环境搭建 之 一:CentOS7.0系统配置
一.我缘何选择CentOS7.0 14年7月7日17:39:42发布了CentOS 7.0.1406正式版,我曾使用过多款Linux,对于Hadoop2.X/YARN的环境配置缘何选择CentOS7. ...
- HotSpot Builder Utility安装指南
系统需求硬件- 一台带有1个以太网卡的电脑(宿主机)- 一个无线路由器 软件- VirtualBox 4.1或更高的版本.下载网址:http://www.virtualbox.org/- 我们提供的最 ...
- 【quartz】 理论知识
属性的介绍 1.调度器属性:分别设置调度器的实例名(instanceName) 和实例 ID (instanceId).属性 org.quartz.scheduler.instanceName 可以是 ...
- CustomEditor 自定义预览窗
using UnityEngine; using System.Collections; public class MyTextureView : MonoBehaviour { public Tex ...
- 完整DataTable与IList互换(转)
public class CollectionHelper { private CollectionHelper() { } public static DataTable ConvertTo< ...
- mysql卸载
先执行mysql安装程序,点击移除,然后再删除对应的安装路径,必要的时候还要删除注册表信息.
- Java Day 04
01 语句 循环结构 嵌套 列的递减 1-5 2-5 3-5// 1-5 1-4 1-3 转义字符 \n 回车 \t 制表符 \b 退格 \r 按下回车键 windows 回车符由 \r \n 组成 ...
- Oracle 异常处理
1.什么是异常 在PL/SQL中的一个警告或错误的情形都可被称为异常.包括编译时错误(PLS)和运行时错误(ORA).一个异常通常包含一个错误代码和错误文本,分别指示异常的编号和具体错误信息. 异 ...