reactjs - 循环遍历数组时 useTransition 没有动画
问题描述
我在代码沙箱上创建了一个小例子来重现它。
https://codesandbox.io/s/infallible-swirles-cbx74
items
由于以下原因,我可以轻松地循环遍历数组useEffect
useEffect(() => {
// taking the first element of the array and placing it at its end
const h = () => set(items => [...items.slice(1), items[0]])
setInterval(h, 2000)
return () => {
clearInterval(h)
}
}, [])
问题是我找不到让这些动画的方法。我认为这可能与,keys
但我不知道如何解决这个问题。
请检查 codeSandbox 链接以了解问题所在并查看完整的示例代码。
解决方案
我最终在没有 react-spring 的情况下做了一些更简单的事情。它几乎 100% 基于 CSS(我使用 JS 间隔来触发随时间的变化)
https://codesandbox.io/s/practical-fog-ubdhn?file=/src/App.js
这个例子中的动画并不完美,但我可以找到一种方法来解决这些小故障,方法是使用visibility
属性隐藏第一个和最后一个元素,这样第一个元素循环回到最后一个位置不会在其余元素上设置动画。可以使用动态 z 索引来实现,但这个沙箱的目的不仅仅是展示我使用的主要方法。
我希望这可以帮助人们登陆这里:)
推荐阅读
- momentjs - 如何使用 Moment.js 计算 2 个日期之间的工作日数,包括开始日期和结束日期
- javascript - 反应模态引导关闭按钮不起作用
- python - 将字符串的每个字母随机大写的代码(代码清理帮助)
- c# - 如何根据条件从 C# 中的列表中选择重复值?
- blockchain - 如何在 Clarity 中将两个 utf8 字符串连接在一起?
- javascript - 使用正则表达式替换线性梯度百分比
- c# - 如何使用 Newtonsoft.Json 将包含数组数组的 json 对象解析为 C# 中的对象列表?
- php - 是否有任何更简单和更短的连接数组值的版本取决于某些情况?
- python - 必须始终传递 `Layer.call` 的第一个参数。”
- linux - 通过 linux 中第二列中地点的 uniq 名称总结一列