immutable的使用

immutable是用来避免开发者直接修改state的库。

我们首先要将state对象变为immutable对象。使用fromJS方法。

import { fromJS } from 'immutable'

//使用immutable对象,是state数据不可变,是防止我们直接修改state数据的一个库

const defaultState = fromJS({
  fouced:false,
  list:[]
});

当我们的state的对象变为immutable对象后,我们修改state是就不能想之前那样,我们需要调用immutable库中提供的set()方法,

export default (state = defaultState,action) => {
  if(action.type === actionTypes.CHANGE_FOCUSED) {
    return state.set('fouced', true)
    //原本是返回一个新的对象。现在把它变为immutable对象后,需要使用set方法,它会自动返回一个新的对象
          //   {
          //     fouced:true
          // }
  }

而我们在mapStateToProps时获取到的state数据,也不能直接获取,我们需要使用immutable库提供的get()方法

const initMapStateToProps = (state) => {
  return {
    //原本是直接获取到fouced,现在变为immutable对象后,需要使用get方法才能获取到fouced属性(1)
    // 当使用了redux-immutable获取combineReducers后,state就变成immutable对象,所以header也要使用get方法获取(2)
    fouced:state.get('header').get('fouced'),//(2)
    list:state.get('header').get('list')
    //1.fouced:state.header.fouced => fouced:state.header.get('fouced')(1)
  }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值