2016-12-08 5 views
0

Я хочу, чтобы сохранить все запросы от пользователя в качестве ключа объектов (поле поиска):Immutable.js добавить новые данные

beforeState = fromJS({ 
     showFilter: false, 
     loading: false, 
     error: false, 
     search: fromJS({}) 
    }) 

    afterState = fromJS({ 
     showFilter: false, 
     loading: false, 
     error: false, 
     search: 
     key1: [{}, {},...], 
     key2: [{}, {}, {}...] 
}) 

Новые данные:

const searchText = 'test' 
const data = [{object1}, {object2},....] 

const expectedResult = state 

поиск должен быть неизменный, поскольку он может измениться. key1, key2 ... не нужно, поскольку как только они инициализируются, это не изменится.

Два вопроса:

Я думаю, что нужна функция fromJS в searchKey для того, чтобы получить карту, я имею в виду, функция fromJS делает карты не гнездятся

var t = beforeState.get('search').constructor.name; 
console.log(t) //gets Map but without fromJS gets Object 

Но как массив внутри ключом1, key2, не может мутировать, другой из JS не понадобится. Так ли это?

Как вставить ключ1, key2 .. значения внутри поля поиска?

ответ

0

Использование mergeDeep, кажется, будет хорошо:

var boxes = Immutable.fromJS({ 
    box1: { 
    id:1 
    }, 
    box2: { 
    id:2 
    }, 
    search: Immutable.fromJS({box3: {z:7}}) 
}); 

var data = Immutable.fromJS({ 
    search: { 
     box3: {id:3} 
    } 
}); 


var newBoxes = boxes.mergeDeep(data); 
console.log(newBoxes.get('search').toJS()); 

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

  • Нет связанных вопросов^_^