У меня есть два объекта карты (одно из них - начальное состояние & один из сети), и мне нужно объединить начальное состояние с данными, полученными из сети. Тем не менее, я держу "hideDetails": true
, чтобы обрабатывать состояние на стороне клиента, а другие - с сервера.immutablejs & merge with new key
//initial state
var j = Immutable.fromJS({
"staffs": {
"hasRecievedData": false,
"addingNewStaff": false,
"data": {
"0": {
"name" : null,
"age" : null,
"designation" : null,
"email" : null,
"hideDetails": true
}
}
}
});
// data from network
var m = Immutable.fromJS({
"staffs" : {
"0" : {
"name" : "name1",
"age" : "23",
"designation" : "work1",
"email" : "[email protected]"
},
"1" : {
"name" : "name2",
"age" : "22",
"designation" : "work2",
"email" : "[email protected]"
}
}
});
Я хочу, чтобы объединить эти два и получить новые состояния, как показано ниже,
var m = Immutable.fromJS({
"staffs" : {
"hasRecievedData": false,
"addingNewStaff": false,
"0" : {
"name" : "name1",
"age" : "23",
"designation" : "work1",
"email" : "[email protected]",
"hideDetails": true
},
"1" : {
"name" : "name2",
"age" : "22",
"designation" : "work2",
"email" : "[email protected]",
"hideDetails": true
}
}
});
Как я могу добиться этого с помощью слияния функции?
Update1:
Не уверен, что это правильно или нет, но я получаю результат с этим,
f = j.merge({
hasRecievedData: true,
data: m.get("staffs").map(function(x){
return x.set("hideDetails",true);
})
});