1. immutable相当于 JSON.parse 和 JSON.stringify;

2.引入redux中,除了

在最外层 reducer中  import { combineReducers } from 'redux-immutable';

涉及到修改 (1)reducer 两个文件  (2)组件

2.1 对于reducer:

首先对默认状态:

import { fromJS } from 'immutable';
const defaultState = fromJS({
'requireFlag':true
})

对于简单的处理state,直接return即可:

case actionTypes.CHANGE_MORE_FLAG:
return state.set('requireFlag',!state.get('requireFlag'));

对于需要复杂处理的,一般将state传入自定义函数,最后返回:

export default (state=defaultState, action)=>{
switch (action.type) {
case actionTypes.INIT_LISTS:
return handleInitList(state,action);
}
} const handleInitList = (state,action)=>{
state.get('nav').map((item,index)=>{ //所有涉及到获取state,使用get方法,这里改变了state
item.checked = false;
});
state.set('page',1); //后续改变其他值,单个是使用 state.set('page',1)
return state.merge({ //改变多个值,需要使用merge函数,最后一定要 return出 merge函数
activeIndex:action.tabIndex,
cardId:action.cardId,
})
//return state; 不要使用merge之后,在这里return state
}

数组合并:

state.get('lifeRights').concat(action.initData.lifeRights);

2.2 组件:

function mapStateToProps(state, ownProps) {
return {
userStatus:state.getIn(['bottom','userStatus']), //注意此处有 中括号,第一个 reducer的名字
}
}

如果该reducer中 只有一层级,如reducer中的状态定义为:

const defaultState = fromJS([])

则在组件中调用使用 get : rightsList: state.get('hotRight')

immutable.js使用总结的更多相关文章

  1. 深度浅出immutable.js

    这篇文章将讲述immutable.js的基本语法和用法. 1.fromJs()  Deeply converts plain JS objects and arrays to Immutable Ma ...

  2. 大话immutable.js

    为啥要用immutable.js呢.毫不夸张的说.有了immutable.js(当然也有其他实现库)..才能将react的性能发挥到极致!要是各位看官用过一段时间的react,而没有用immutabl ...

  3. Immutable.js – JavaScript 不可变数据集合

    不可变数据是指一旦创建就不能被修改的数据,使得应用开发更简单,允许使用函数式编程技术,比如惰性评估.Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map 和 f ...

  4. Immutable.js尝试(node.js勿入)

    最近做一些复杂html常常需要在页面做一些数据处理,常常在想如果 js有list 这种数据结构多少,今天逛github时 发现有Immutable.js 这个项目https://github.com/ ...

  5. React+Immutable.js的心路历程

    这段时间做的项目开发中用的是React+Redux+ImmutableJs+Es6开发,总结了immutable.js的相关使用姿势: Immutable Data 顾名思义是指一旦被创造后,就不可以 ...

  6. [Javascript] Creating an Immutable Object Graph with Immutable.js Map()

    Learn how to create an Immutable.Map() through plain Javascript object construction and also via arr ...

  7. [Javascript] Manage Application State with Immutable.js

    Learn how Immutable.js data structures are different from native iterable Javascript data types and ...

  8. [Immutable.js] Working with Subsets of an Immutable.js Map()

    Immutable.js offers methods to break immutable structures into subsets much like Array--for instance ...

  9. [Immutable,js] Iterating Over an Immutable.js Map()

    Immutable.js provides several methods to iterate over an Immutable.Map(). These also apply to the ot ...

  10. [Immutable,js] Immutable.Record() as data models

    The Immutable.js Record() allows you to model your immutable data much like you would model data wit ...

随机推荐

  1. Zedboard初体验

    前言 这是我学习Zedboard时做的笔记 Zedboard是什么 Zedboard是Xilinx公司推出的搭载了Zynq芯片的开发板,其中Zynq芯片采用全新的设计理念,将ARM处理器嵌入FPGA可 ...

  2. win10 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    更新Win10,原来的IIS站点访问不了,原因是因为IIS 没有.net 4.5,使用网上的aspnet_regiis.exe -i命令,一点都不靠谱,直接提示: C:\WINDOWS\system3 ...

  3. Java 爬虫学习

    Java爬虫领域最强大的框架是JSoup:可直接解析具体的URL地址(即解析对应的HTML),提供了一套强大的API,包括可以通过DOM.CSS选择器,即类似jQuery方式来取出和操作数据.主要功能 ...

  4. Tomcat配置服务和自启动

    Tomcat配置服务和自启动1.Tomcat配置服务 假设Tomcat的安装路径为/usr/local/tomcat 1 为Tomcat添加启动参数 catalina.sh在执行的时候会调用同级路径下 ...

  5. CAM(Content Addressable Memory)介绍

    CAM是一种特殊的存储器.所谓CAM,即内容寻址存储器.CAM存储器在其每个存储单元都包含了一个内嵌的比较逻辑,写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的 ...

  6. python的闭包与延时绑定问题

    起源于一道面试题... def mul(): return [lambda x : i*x for i in range(4)] print([m(2) for m in mul()]) # outp ...

  7. Servlet中的过滤器Filter

    链web.xml中元素执行的顺序listener->filter->struts拦截器->servlet. 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...

  8. requestAnimationFrame 兼容不同浏览器

    简单兼容: window.requestAnimFrame = (function(){ return window.requestAnimationFrame || window.webkitReq ...

  9. github命令总结

    一.创建版本库 1.创建一个空目录 $ mkdir learngit $ cd learngit $ pwd //pwd命令用于显示当前目录 2.创建一个版本库(通过git init命令把这个目录变成 ...

  10. Win10系列:C#应用控件基础18

    WebView控件 使用WebView控件可以在应用中添加一个简易的网页浏览器窗口,将指定地址的网页内容显示出来,并可以通过WebView控件所提供的方法.属性及事件,实现如页面导航.HTML文本解析 ...