在this example中,您可以看到路线更改触发的页面之间有一些不错的过渡。 (摘自LevelUp Tutorials的React Animation课程,非常感谢Scott Tolinski)。
现在,我想在两个方向上进行这些转换,例如,取决于转换到(或从)哪个页面上来
在第一个示例中,我创建了this example,其中x
的值是动态的,并且应根据过渡方向将其评估为100
或-100
我还没有从根本上了解useTransition()
的工作方式,并且documentation受到很大的限制。这些示例看起来很棒,但很难理解。
This example似乎与我要实现的目标类似,但是代码感觉像是黑魔法:从y
返回的每个对象的rows.map()
属性似乎是与分配给y
和enter
属性的函数上的update
值有关,因为如果删除该错误,则会得到错误:Cannot read property 'replace' of undefined
。如何运作?
答案 0 :(得分:0)
这个问题有两个部分。
确定方向
更改动画
我创建了一个解决第二部分的示例。当用户单击第一页时,我将反转动画。
const reverse = location.pathname === '/';
const transitions = useTransition(location, location => location.key, {
from: { opacity: 0, transform: `translate3d(${reverse ? '-100%' : '100%'},0,0)` },
enter: { opacity: 1, transform: "translate3d(0,0,0)" },
leave: { opacity: 0, transform: `translate3d(${reverse ? '100%' : '-100%'},0,0)` },
// "initial: null" should only disable the 'from' initial transition, not the subsequent 'leave' transition (on the first manually triggered transition)
initial: null
});
这是沙箱:https://codesandbox.io/s/spring-transition-with-routes-215t8
对于第一部分以确定何时反转动画,我将在每次单击时存储路径并将下一个与上一个进行比较。这里有一个存储路径的示例:Check history previous location before goBack() react router v4
希望对您有帮助。