嗯,这个问题很简单。 假设我们有一些带有标识符的模型
const ReferableModel = types.model({
id: types.identifier(),
})
以及无限多个可以参考该模型的模型
const Model1 = types.model({
ref: types.maybe(types.reference(ReferableModel)),
})
const Model2 = types.model({
ref: types.maybe(types.reference(ReferableModel)),
})
// and so on
这些模型可以位于树的任何位置。
所以,问题是: 是否可以列出(或至少计数)引用特定标识符的模型没有额外的摩擦?我的意思是,是的,我们总是可以手动计算这些东西,但我想知道我是否缺少文档或其他东西(例如
types.refinement
)并且有一些开箱即用的方法。
提前致谢
在
MobX
中,没有内置方法可以自动列出或计算引用特定标识符的模型。但是,您可以创建一个实用函数来实现此目的。此实用程序函数将遍历树并通过标识符计数对特定 ReferableModel
的引用:
function countReferences(tree, identifier) {
let count = 0;
function traverse(node) {
if (node.ref && node.ref.id === identifier) {
count++;
}
node.children?.forEach(traverse);
}
traverse(tree);
return count;
}