【问题标题】:React: Reorder list causes unwanted transitions反应:重新排序列表会导致不需要的转换
【发布时间】:2017-03-27 21:38:16
【问题描述】:

我有一个在 React 中实现的东西的列表,可以通过几个按钮重新排序以上下移动。

我遇到的问题是,因为我有一个用 CSS 实现的切换组件并且在状态之间有转换,所以当我更改具有不同切换状态的两行之间的顺序时,我看到的转换只有想要查看然后单击切换,而不是在重新排序时。

这里是问题的 gif 以便更好地解释。

我知道 React 就是这样工作的,它只是渲染和改变差异,这就是为什么它只是改变属性,这就是我看到过渡发生的方式。

我的问题是,有没有办法避免这种情况?

编辑: 解决方案是正确的。虽然我使用的是 key 属性,但它的值是数组的索引。这让 React 感到困惑,无法确定正确的元素。

【问题讨论】:

  • 你用什么来代替键值的数组索引?
  • 在这种情况下,我使用了数据库中记录的 ID,但如果您还没有 ID,则可以使用随机生成的 ID。

标签: javascript reactjs transitions


【解决方案1】:

确保为列表中的每个元素设置了key 属性。

这将使 react 能够重用现有的 DOM 元素,而不是重新渲染它们,这应该可以解决您的问题。它还应该提高过程中的性能。


[...] React 支持 key 属性。当孩子有钥匙时,React 使用 将原始树中的孩子与 后续树。

Source

【讨论】:

  • 为了添加更多信息,我使用索引作为键,所以 React 在识别正确元素时会感到困惑。
猜你喜欢
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2020-10-19
  • 2020-11-05
  • 2019-03-07
相关资源
最近更新 更多