Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 反应弹簧延迟开关转换_Reactjs_React Spring - Fatal编程技术网

Reactjs 反应弹簧延迟开关转换

Reactjs 反应弹簧延迟开关转换,reactjs,react-spring,Reactjs,React Spring,标题可能不在现场,但我会尝试在这里解释。我一直在使用inin-out模式,但由于我的动画主要是使用react-spring包中的hook-useSpring完成的,所以我宁愿完全从react-Transition组中移出。但我不太确定如何达到同样的效果。当发生转换时(对于路由),我需要旧组件保持可见(比如2000毫秒),而新组件已经可见。查看react spring中的钩子useTransition,我看不出有什么方法可以为离开引入延迟 const transition = useTransit

标题可能不在现场,但我会尝试在这里解释。我一直在使用in
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
})
以下是两种方法的工作演示:

希望这对某人有帮助