使用animate实现页面过度_使用 React Hooks 创建可复用的动画组件

本文介绍了如何使用React Hooks和Animate.css库来创建可复用的动画过渡组件,用于在页面中实现元素的平滑消失效果。通过创建一个函数式组件,并结合useEffect钩子,作者展示了如何优雅地处理动画的生命周期,同时保持代码的简洁性和可维护性。文章还提到了如何将这种组件应用于侧边栏和导航栏中。
摘要由CSDN通过智能技术生成

06d27493c12ee7391c44b9876c1f7ae7.png

Photo by Dylan Ferreira on Unsplash

原文:https://www.freecodecamp.org/news/animating-visibility-with-css-an-example-of-react-hooks/

作者:Christian Sepulveda

译者:Zou Li

提示:

动画总是会取悦用户。看到各种文章的介绍,你可能会觉得开发者们喜欢使用 React Hooks,但我发现自己开始慢慢对 Hooks 产生厌倦了。

某个意外的发现让我对 React Hooks 有了新的认识,它不仅仅是一种新的开发方式。也许你已经从文章标题猜到是什么了,没错,就是动画!

我正在开发一个基于 React 的,使用网格布局组合卡片组件的应用,当删除某个卡片组件时,为它添加动画效果,看起来像下面一样:

75c859e416a612fc4657ec726a186b48.gif

但是,和图中效果相比较始终还是有点细微差别。在我的接下来的解决方案中,很好地利用了 React Hooks。

我们将要做什么?

  • 开始构建一个基本的项目骨架

  • 为元素的消失添加动画效果,解决一些小问题

  • 最终效果实现后,将其重构为一个可复用的动画组件

  • 在顶部导航和侧边导航中使用该动画组件

如果你没耐心,这里有整个项目的仓库地址,每一步都有相应的标记(链接地址和描述参考 README 文件)。

骨架

我使用 create-react-app 创建了一个简单的应用程序,它是一个简单的卡片网格结构,每个单独卡片可以被隐藏。

f4171f9fa653b9c69a27153cafd7d1e9.gif

实现代码很简单,效果也很无趣。当用户点击眼睛图标时,我们改变卡片的 display 属性。

function Box({ word }) {
    
  const color = colors[Math.floor(Math.random() * 9)];
  const [visible, setVisible] = useState(true);
  function hideMe() {
    setVisible(false);
  }
  let style = { borderColor: color, backgroundColor: color };
  if (!visible) style.display = "none";
  return (
    <div className="box" style={style}>
      {" "}<div className="center">{word}div>{" "}<button className="button bottom-corner" onClick={hideMe}>
        {" "}<i className="center far fa-eye fa-lg" />{" "}button>{" "}div>
  );
}

上面的代码中使用到了 React Hooks,但这不是 Hooks 最有趣的用途。

添加动画

我没有构建自己的动画库,而是使用了一个像 animate.css 这样的动画库。react-animated-css 是一个很好的库,它为 animate.css 提供了一个包装器。

安装 react-animated-css

npm install --save react-animated-css

在 index.html 中添加 animate

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值