2016-12-29 44 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

相关问题