reducer.js中store的数据是不能改变的,用原始的方法要手动的保证store不被修改,存在风险。imutable.js可以生成一个不可改变的对象,可以避免掉自己不小心修改掉store的情况。

1.安装

npm install immutable --save

2.reducer.js中导入immutable,fromJS方法可以把一个普通对象变成不可变对象。修改数据时用set方法。

import * as actionTypes from './actionTypes';
import{ fromJS } from 'immutable'
/*fromJS方法可以把一个普通对象变成不可变对象*/
const defaultState=fromJS({
focused:false
})
export default(state=defaultState,action)=>{
if(action.type==actionTypes.SEARCH_FOCUS){
//immutable对象的set方法,会结合之前的immutable对象的值和设置的值,返回一个全新的对象,不是修改对象的值
return state.set('focused',true)
}
if(action.type==actionTypes.SEARCH_BLUR){
return state.set('focused',false)
}
return state;
}

3.组件中获取数据时,用get方法。

const mapStateToProps = (state) => {
//focused是immutable对象,不能用state.header.focused的形式获取,要用get()
return {
focused:state.header.get('focused')
}
}

最新文章

  1. welcome to my cnblog
  2. 关于跨域GET、POST请求的小结//////////////////////zzzzzzz
  3. sqlite读取中文乱码(C#)
  4. subversion(SVN)常规使用
  5. 7.在AngularJS视图中实现指令
  6. GoLang搞一个基本的HTTP服务
  7. C#中判断字符是否大写
  8. [Android自定义控件] Android自定义控件
  9. [js开源组件开发]js轮播图片支持手机滑动切换
  10. 关于 app测试工具
  11. python核心编程第六章练习6-8
  12. net.sf.json.JSONException: java.lang.NoSuchMethodException
  13. TColorPickerButton组件
  14. zabbix discovery
  15. VMware WorkStation9.0虚拟机如何运行WINPE
  16. h5 canvas与SVG的比较
  17. Linux - 常用 Linux 命令的基本使用
  18. linux中gdb的使用
  19. 数组实例的 copyWithin()
  20. java 素数(按要求输出)

热门文章

  1. 从零开始学习html(二)认识标签(第一部分)——下
  2. SD从零开始67-70 后勤信息系统中的标准分析, 信息结构, 信息的更新规则, 建立统计数据
  3. NopCommerce 根据手机浏览器和桌面浏览器切换 Theme
  4. 【Java入门提高篇】Day27 Java容器类详解(九)LinkedList详解
  5. 盐城 - 开设IT公司的好地方
  6. 12-openldap使用AD密码
  7. alsa声卡分析alsa-utils调用过程(二)-tinymixer
  8. Linux小技巧之:两种方法统计访问web网站的前10个IP
  9. <20180923>中秋节日期间的维护日志
  10. sys.argv[]使用