我想寫一個函數來更新我有的不可變對象。我正在使用return myitem.updateIn
,所以我可以鏈接另一個已經工作的更新ontop。到目前爲止,我有這樣的:控制檯日誌裏更是創下了正確的部分然而,這似乎並不可變,更新裏面的地圖不返回正確的對象
memo.updateIn(['Topics', 'filters'], function(topic) {
topic.map(function(singleTopic) {
singleTopic.update('filters', function(subTopicFilters) {
subTopicFilters.map(function(singleSubTopic) {
if(singleSubTopic.get('checked')){
console.log("check", singleTopic.toJS());
return singleTopic.set('checked', true);
}
})
})
})
});
,不被更新不可變的映射,因爲我認爲它會。 psycological disorders
中的checked
值應設置爲true。在這裏看到小提琴,例如https://jsfiddle.net/alexjm/c5edxaue/27/。
對於一些上下文中,這是被在幾個單獨.update
將在備忘錄爲了像這樣
returnModifiedData(memo) {
return memo.update (....
).update(.....
.update();
該函數運行返回用於在該過程中的第一步驟中,將其他2已經在工作。我不知道我在做什麼錯誤沒有得到這個更新正確,可能我怎麼試圖.set
裏面的單眼?基本邏輯是檢查主題是否包含內部檢查的子主題,如果是,請檢查主題。任何幫助將不勝感激。謝謝!
編輯:忘了補充一下備忘錄本身看起來像:
const memo = {
"Topics": {
"filters": {
"Psychological disorders": {
"checked": false,
"filters": {
"Anxiety disorders": {
"filters": {},
"checked": true
}
}
},
"test": {
"checked": false,
"filters": {
"test": {
"filters": {},
"checked": false
}
}
}
},
"isOpen": false
}
};
這是非常有幫助,非常感謝你的幫助。 – ajmajmajma
Np,下一次問邏輯,我相信你會更快得到你的答案;) – fuyushimoya