immutable.js使用总结

博客介绍了immutable相当于JSON.parse和JSON.stringify,还讲述了在redux中引入immutable的操作,包括在最外层reducer中引入相关方法,以及涉及修改reducer文件和组件的具体处理方式,如reducer中对默认状态的处理、组件中状态的调用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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') 

转载于:https://www.cnblogs.com/xiaozhumaopao/p/10559561.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值