2016-04-09 2 views
1

Я использую React, Redux & Неизменяемый здесь. Вопрос заключается в объединении простого Js-объекта в Immutable Map obj.Слияние объектов с неизменяемыми js

Импортирующие Immutable.js:

import { List as iList, 
     Map as iMap } from "immutable"; 

action.payload это:

{ 
    Preview : { 
     tabClass : "tabPreview tab activeTab" 
    }, 
    Body : { 
     tabClass : "tabBody tab" 
    }, 
    Sleeve : { 
     tabClass : "tabSleeve tab" 
    } 
}; 

InitialTabState создан с 'Immutable.js' заключается в следующем:

const initialTabState = iList.of(
    iMap({ 
     tabClass : "tabPreview tab activeTab", 
     tabName : "Preview" 
    }), 
    iMap({ 
     tabClass : "tabBody tab", 
     tabName : "Body" 
    }), 
    iMap({ 
     tabClass : "tabSleeve tab", 
     tabName : "Sleeve" 
    }) 
); 

Функция редуктора, который слияние action.payload вверху, в InitialTabState:

const tabsState = (state = initialTabState, action) => { 
    let payload = action.payload; 
    switch(action.type) { 
    case(ENABLE_TAB): 
     return (
      state.map((obj) => { 
       let curObjName = obj.get("tabName"); 
       return (
        obj.merge(payload[ curObjName ][ "tabName" ]) 
       ); 
      }) 
     ); 
    ... 
}; 

Однако, похоже, ничего не происходит. Я не получаю никакой ошибки, выходной объект остается таким же, как InitialTabState, когда свойство tabClass внутри него должно изменяться в соответствии с функцией слияния из Immutable.js.

+0

Что вы ожидаете от состояния, когда оно возвращается из редуктора? – max

ответ

1

obj.merge(payload[ curObjName ][ "tabName" ]) слияние имущества, которого нет на полезной нагрузке. Я считаю, что вы хотите obj.merge(payload[ curObjName ]), который обновит классы вкладки.

Смежные вопросы