在header的reducer.js裏把header變成immutable對象以後,在組件裏獲取focused屬性就得這樣獲取:npm
focused:state.header.get('focused')
state是一個js對象,state.header是一個immutable對象,因此調用focused這個屬性點時候先用.再用.get(),數據獲取行爲是不統一的。咱們須要把state也變成immutable對象而不是js對象。redux
state是在跟目錄的總的reducer.js下建立的,咱們須要依賴一個redux-immutable庫。spa
1.安裝code
npm install redux-immutable --save
2.跟目錄下總的reducer.js裏:combineReducers再也不用rudux裏的,而是redux-immutable裏的,這樣combineReducers裏的對象就是一個immutable對象。對象
//combineReducers再也不用rudux裏的,而是redux-immutable裏的,這樣combineReducers裏的對象就是一個immutable對象 //import {combineReducers} from 'redux' import {combineReducers} from 'redux-immutable' import {reducer as headerReducer} from '../common/header/store' const reducer=combineReducers({ header:headerReducer }); export default reducer;
3.獲取數據的時候用get(),或者getIn()blog
const mapStateToProps = (state) => { return { focused:state.getIn(['header','focused']) //focused:state.get('header').get('focused') } }