MobX 状态树:获取使用特定标识符的引用列表

问题描述 投票:0回答:1

嗯,这个问题很简单。 假设我们有一些带有标识符的模型

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
)并且有一些开箱即用的方法。

提前致谢

javascript reference mobx uniqueidentifier mobx-state-tree
1个回答
0
投票

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.