拖动或单击时反应弹簧动画



使用react-springreact-use-gesture,我想要一个可以通过拖动或单击按钮激活的转盘动画。

我找到了一个解决方案:https://codesandbox.io/s/viewpager-6o78r?file=/src/index.js

setTimeout放入动画帧的循环中,但我觉得一定有更好的方法。我做这件事的方式可能不那么流畅,因为我没有放松等。有没有办法在我已经创建的弹簧上使用fromto属性,供拖动手势使用?

我还不太使用useSprings函数,但我想我想出了一个更简单的解决方案:

  const handleNextPage = () => {
    if (index.current < pages.length - 1) {
      index.current = index.current + 1
      set(i => ({
        x: (i - index.current) * window.innerWidth,
        scale: 1,
        display: 'block'
      }))
    } 
  }

当你在图像的末尾时,我还添加了一个可选的动画,以获得你在末尾的反馈。它有两种状态,一种是100像素的上脚和下脚。我在暂停的情况下完成了两种状态,但可能会以更优雅的方式完成。

  const handleNextPage = () => {
    if (index.current < pages.length - 1) {
      index.current = index.current + 1
      set(i => ({
        x: (i - index.current) * window.innerWidth,
        scale: 1,
        display: 'block'
      }))
    } else {
      set(i => ({
        x: (i - index.current) * window.innerWidth - 100
      }))
      setTimeout(
        () =>
          set(i => ({
            x: (i - index.current) * window.innerWidth
          })),
        500
      )
    }
  }

整个示例:https://codesandbox.io/s/viewpager-5pgl5?file=/src/index.js

相关内容

  • 没有找到相关文章

最新更新