在header的reducer.js里把header變成immutable對象之后,在組件里獲取focused屬性就得這樣獲取:
focused:state.header.get('focused')
state是一個js對象,state.header是一個immutable對象,所以調用focused這個屬性點時候先用.再用.get(),數據獲取行為是不統一的。我們需要把state也變成immutable對象而不是js對象。
state是在跟目錄的總的reducer.js下創建的,我們需要依賴一個redux-immutable庫。
1.安裝
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()
const mapStateToProps = (state) => { return { focused:state.getIn(['header','focused']) //focused:state.get('header').get('focused') } }