我正在使用显示树结构的React构建网站。 (就HTML而言,它根本不是分层的,而只是在不同位置的一堆div,用SVG来绘制连接器。)
为了布置树,我使用算法(Buchheim等人对Walker算法的改进),该算法查看所有树节点的宽度并计算每个节点的适当位置。 / p>
我无法整合这个"对"办法。我知道节点的宽度,直到我在componentDidMount函数内部,但那时我还不知道该位置。所以我需要稍后改变位置,之后修改DOM并不像React方式。确保树组件可以访问节点也感觉比它可能需要的更轻微。
以下是我现在所做的事情:
树组件的渲染函数生成一组节点组件。
我已经将一些额外的词典直接添加到树组件中以存储我需要的数据。我发现没有办法使用道具或状态。 (我从砌体混合中复制了这个。)
节点组件的componentDidMount函数调用树组件上的回调以在那里注册其DOM节点。这感觉非常糟糕但是有效。
树组件的componentDidMount函数布局树,设置DOM节点的位置,并在不由React管理的div中使用SVG绘制节点之间的连接。这也感觉有点脏,但更重要的是因为我需要快速获得有用的东西。
我不喜欢的主要事情是不得不潜入并行数据结构,以便能够在节点之后改变DOM节点的位置。已调用componentDidMount函数。
有更简洁的方法吗?