Reactjs 反应弹簧延迟开关转换
标题可能不在现场,但我会尝试在这里解释。我一直在使用inReactjs 反应弹簧延迟开关转换,reactjs,react-spring,Reactjs,React Spring,标题可能不在现场,但我会尝试在这里解释。我一直在使用inin-out模式,但由于我的动画主要是使用react-spring包中的hook-useSpring完成的,所以我宁愿完全从react-Transition组中移出。但我不太确定如何达到同样的效果。当发生转换时(对于路由),我需要旧组件保持可见(比如2000毫秒),而新组件已经可见。查看react spring中的钩子useTransition,我看不出有什么方法可以为离开引入延迟 const transition = useTransit
in-out
模式,但由于我的动画主要是使用react-spring
包中的hook-useSpring完成的,所以我宁愿完全从react-Transition组中移出。但我不太确定如何达到同样的效果。当发生转换时(对于路由),我需要旧组件保持可见(比如2000毫秒),而新组件已经可见。查看react spring
中的钩子useTransition
,我看不出有什么方法可以为离开
引入延迟
const transition = useTransition(show, null, {
from: { opacity: 0 },
enter: { opacity: 1 },
leave: { opacity: 0 },
config: {
duration: 200, // duration for the whole animation form start to end
},
})
在SwitchTransition
中,可能是这样的:
<SwitchTransition mode='in-out'>
<CSSTransition
key={location.pathname}
timeout={{ enter: 2000, exit: 400 }}
unmountOnExit
onEnter={()=>{callback}}
>
/* here go routes */
</CSSTransition>
</SwitchTransition>
{callback}}
>
/*这是路线*/
如何在React Spring中使用useTransition
?我不知道输入和离开的任何单独计时,但您可以使用插值执行类似的操作。例如,定义x值而不是不透明度
const transition = useTransition(show, s => (s ? "on" : "off"), {
from: { x: 0 },
enter: { x: 1 },
leave: { x: 2 },
config: {
duration: 4000 // duration for the whole animation form start to end
}
});
在“渲染方法”中,可以从x插值不透明度:
{transition.map(({ item, props, key }) => (
<animated.div
key={key}
style={{
opacity: props.x.interpolate({
range: [0.0, 1, 1.25, 2],
output: [0, 1, 0, 0]
})
}}
>
{item ? "on" : "off"}
</animated.div>
))}
{transition.map({item,props,key})=>(
我不知道进入和离开的时间,但你可以用插值做类似的事情。例如,你定义x值而不是不透明度
const transition = useTransition(show, s => (s ? "on" : "off"), {
from: { x: 0 },
enter: { x: 1 },
leave: { x: 2 },
config: {
duration: 4000 // duration for the whole animation form start to end
}
});
在“渲染方法”中,可以从x插值不透明度:
{transition.map(({ item, props, key }) => (
<animated.div
key={key}
style={{
opacity: props.x.interpolate({
range: [0.0, 1, 1.25, 2],
output: [0, 1, 0, 0]
})
}}
>
{item ? "on" : "off"}
</animated.div>
))}
{transition.map({item,props,key})=>(
方法1:最简单的方法是使用trail
属性
const transition = useTransition(show, null, {
from: { opacity: 0 },
enter: { opacity: 1 },
leave: { opacity: 0 },
trail:150
})
方法2:通过使用额外的延迟数组向每个项目添加不同的延迟
const transition = useTransition(show, null, {
from: { opacity: 0 },
enter: { opacity: 1 },
leave: { opacity: 0 },
trail:150
})
以下是两种方法的工作演示:
希望这对某人有所帮助方法1:最简单的方法是,使用trail
property
const transition = useTransition(show, null, {
from: { opacity: 0 },
enter: { opacity: 1 },
leave: { opacity: 0 },
trail:150
})
方法2:通过使用额外的延迟数组向每个项目添加不同的延迟
const transition = useTransition(show, null, {
from: { opacity: 0 },
enter: { opacity: 1 },
leave: { opacity: 0 },
trail:150
})
以下是两种方法的工作演示:
希望这对某人有帮助