2016-12-29 99 views
0

嵌套屬性,我有以下狀態:合併只有一個減速狀態

new Map({ 
    data: new Map({ 
     all: null, 
     recent: null 
    }), 
    filters: new Map({ 
     pagination: new Map({ 
      currentPage: 1 
     }), 
     sortBy: new Map({ 
      key: 'id', 
      order: 'desc' 
     }) 
    }), 
    various: new Map() 
} 

我只想改變currentPage財產,留下sortBy孤獨,就像這樣:

case PAGINATE: 
    return state.merge({ 
     filters: new Map({ 
      pagination: new Map({ 
       currentPage: action.response 
      }) 
     }) 
    }) 

但是相反,從filters中刪除sortBy,我必須這樣做才能使其正常工作:

case PAGINATE: 
    return state.merge({ 
     filters: new Map({ 
      pagination: new Map({ 
       currentPage: action.response 
      }), 
      sortBy: new Map({ 
       key: state.getIn(['filters', 'sortBy', 'key']), 
       order: state.getIn(['filters', 'sortBy', 'order']) 
      }) 
     }) 
    }) 

有沒有更好的方法來做到這一點?

回答

0

您可以喜歡這個

return state.merge({ 
    filters: state.get('filters').merge({ 
     pagination: new Map({ 
      currentPage: action.response 
     }) 
    }) 
}) 

瞭解更多從here

0

在你的情況,你可以使用mergeIn,這是updateInmerge組合,返回一個新的地圖,但在執行合併在按照keyPath到達的點上。

使你的代碼看起來就像這樣:

case PAGINATE: 
    return state.mergeIn(['filters', 'pagination'], { 
    currentPage: action.response 
    }) 

閱讀從here更多關於mergeIn