我有一个带有分数的项目列表,按分数排序,由 react.js 呈现为垂直方向的矩形项目列表(最高分数在顶部)。对单个项目的悬停和其他点击可能会显示/隐藏额外信息,从而改变它们的垂直高度。
新信息的到来会稍微改变分数,使一些项目在重新排序后排名更高,而其他项目排名更低。我希望这些物品同时动画到它们的新位置,而不是立即出现在它们的新位置。
在 React.js 中是否有推荐的方法来做到这一点,也许是一个流行的附加组件?
(在过去使用 D3 的类似情况中,我使用的技术大致是:
- 以自然顺序显示包含 item DOM 节点的列表,并具有相对定位。通过相对定位,其他小的变化——CSS 或 JS 触发的——到个别项目的程度会按预期移动其他项目。
- 一步修改所有 DOM 节点,将它们的实际相对坐标作为新的绝对坐标——DOM 更改不会导致视觉变化。
- 将项目 DOM 节点在其父项中重新排序为新的排序顺序——另一个 DOM 更改不会导致视觉变化。
- 根据新排序中所有前面项目的高度,将所有节点的顶部偏移设置为它们的新计算值。这是唯一视觉上活跃的步骤。
- 将所有项目 DOM 节点突变回非偏移相对定位。同样,这不会导致视觉上的变化,但是现在相对定位的 DOM 节点,按照底层列表的自然顺序,将通过适当的移动来处理内部悬停/展开/等样式的变化。
现在我希望以 React-ish 的方式产生类似的效果......)