【发布时间】:2017-05-21 06:22:06
【问题描述】:
在尝试规范化负载时遇到了一点问题,该负载包含与使用Normalizr的父级相同类型的嵌套架构
例如,我有一个初始对象 (menu),它有一个子对象 (sections),它是一个对象数组 (section),可以深入。
{
id: 123,
sections: [{
id: 1,
sections:[{ id: 4, sections: [ id: 5, sections: [] ] }]
}, {
id: 2,
sections:[]
}, {
id: 3,
sections:[]
}]
}
我首先创建了一个 menu 架构,它的定义中的部分链接到一个 sections 架构,适用于第一次传递,但随后无法处理部分的子节点,因此我添加了一个后续section 架构中具有相同名称的定义(值得一试),但它不起作用。
const section = new schema.Entity('sections')
const sections = new schema.Entity('sections', {
sections: section
})
const menu = new schema.Entity('menu', {
sections: [ sections ]
})
section.define({ sections })
我希望最终得到以下对象:
{
entities: {
menu: {
sections: [1, 2, 3]
},
sections: [{
1: { id: 1, sections: [4] },
2: { id: 2, sections: [] },
3: { id: 3, sections: [] },
4: { id: 4, sections: [5] },
5: { id: 5, sections: [] },
}]
}
}
【问题讨论】:
-
那不行吗?这看起来比我用过的语法要新,但我不明白为什么它不起作用。
-
如果它确实有效,我不会向 SO 发布问题! :D
-
好点,可能是因为会话名称相同吗?您是否尝试过在形状中定义和使用自我。
标签: javascript reactjs redux normalizr