Svelte 过渡方向开关问题
Svelte Transition Direction Switch Issue
我正在使用 each
块来遍历项目数组,并在其中使用 if
块来检查应显示哪些项目,以及 fly
transition 被应用到带有控制过渡方向的变量的内部项目,这样如果用户点击 next 一切都会从 <-- 这样,如果他们点击上一个按钮一切都会出去和进来从 --> 这样。
效果很好,只有一个例外。当用户朝一个方向前进,然后他们点击另一个方向时,当前显示的项目的输出动画会朝错误的方向移动,但仅在第一个输出动画上出现,然后它会排成一行。这是问题的 REPL:https://svelte.dev/repl/1aa3608458f84a4fb4d93b10b47ae3f1?version=3.25.0
有没有办法让第一个结尾动画在方向改变后走正确的路?我觉得有什么东西我没有看到。
编辑:
有一个 Github 问题似乎与此问题有些相关。
正如我在 Github 问题中指出的那样,该行为似乎只影响 each
块内的项目。 REPL 显示了在动态 x 方向上按预期工作的行为。
我想出了 this workaround,我将过渡移动到 each
块的父元素并复制它,然后交替显示哪个 each
块。
我很想知道是否有更好的解决方法,因为复制很痛苦。如果不是我就把它做成一个组件然后羞愧地把它藏起来。
我相信这种行为的原因是你在知道“out”的方向之前就定义了“out”函数,因此如果你改变方向,方向就会错误。
您可以为“out”定义自己的函数,当您 select 方向时它是 运行,因此您可以在自己的函数中使用正确的方向。
我不确定我的解释是否正确,但这是有效的示例:
const myOut=(el)=>{
return fly(el,{x:-x, duration:600})
}
在div中:
out:myOut|local
我正在使用 each
块来遍历项目数组,并在其中使用 if
块来检查应显示哪些项目,以及 fly
transition 被应用到带有控制过渡方向的变量的内部项目,这样如果用户点击 next 一切都会从 <-- 这样,如果他们点击上一个按钮一切都会出去和进来从 --> 这样。
效果很好,只有一个例外。当用户朝一个方向前进,然后他们点击另一个方向时,当前显示的项目的输出动画会朝错误的方向移动,但仅在第一个输出动画上出现,然后它会排成一行。这是问题的 REPL:https://svelte.dev/repl/1aa3608458f84a4fb4d93b10b47ae3f1?version=3.25.0
有没有办法让第一个结尾动画在方向改变后走正确的路?我觉得有什么东西我没有看到。
编辑:
有一个 Github 问题似乎与此问题有些相关。
正如我在 Github 问题中指出的那样,该行为似乎只影响 each
块内的项目。 REPL 显示了在动态 x 方向上按预期工作的行为。
我想出了 this workaround,我将过渡移动到 each
块的父元素并复制它,然后交替显示哪个 each
块。
我很想知道是否有更好的解决方法,因为复制很痛苦。如果不是我就把它做成一个组件然后羞愧地把它藏起来。
我相信这种行为的原因是你在知道“out”的方向之前就定义了“out”函数,因此如果你改变方向,方向就会错误。
您可以为“out”定义自己的函数,当您 select 方向时它是 运行,因此您可以在自己的函数中使用正确的方向。
我不确定我的解释是否正确,但这是有效的示例:
const myOut=(el)=>{
return fly(el,{x:-x, duration:600})
}
在div中:
out:myOut|local