最近Immutable.jsで作業を開始しました。参考にならない例が不足しています。変更不可能なjsマップでネストされた更新を実行
私は、構造がこのように見える、深くネストされた変更不可能なマップを持っています。そして、私はimmutable.jsを使って、id '264'の章のページデータを更新する必要があります。
var publisherData = {
"id": 367,
"publisher": {
"author": {
"id": 13,
"books": [
{
"id": 13,
"sections": [
{
"id": 49,
"chapters": [
{
"id": 262,
"pages": null
},
{
"id": 263,
"pages": null
},
{
"id": 264,
"pages":null
},
{
"id": 265,
"pages": {
"id": 159
},
}
]
},
{
"id": 50,
"chapters": [
{
"id": 266,
"pages": null
},
{
"id": 267,
"pages": null
},
{
"id": 268,
"pages": null
},
{
"id": 269,
"pages": null
},
{
"id": 270,
"pages": null
},
{
"id": 271,
"pages": null
},
{
"id": 272,
"pages": null
}
]
},
{
"id": 51,
"chapters": [
{
"id": 273,
"pages": null
}
]
},
{
"id": 52,
"chapters": [
{
"id": 277,
"pages": null
}
]
}
]
}
]
}
}
私はこのコードを使用して、関連するmoduleIndexとsectionIndexを得ることができた -
immutableStub.getIn(["publisher","author", "books"]).map((module,i) => {
return module.get('sections').map((section,j) => {
return section.get('chapters').map((chapter,k) => {
if(chapter.get('id') == '273'){
moduleIndex = i;
sectionIndex = j;
chapterIndex = k;
}
})
})
})
私はここから進むことができますどのように? keyPathは部分的に「publisher」、「author」、「books」のように部分的にしか伸びないので、「updateIn」は使用できません。
解決策をご提案ください。あなたは、ほとんど存在し
?本の注文は重要ですか?この特定の例では – hazardous
であり、本は1つしかない。しかし、それは多くのことでした。 – Deadfish
複数の書籍でも、あなたはいつも一意のIDを持つので、マップはここではIMOで動作するはずです。 – hazardous