在实现一个React中的弹框组件时,想给组件加个进入和退出动画,但发现React没有Vue3那样现成的api,因此需要自己设计。

主要思路为给组件添加一个state来选择className,不同的className会给组件添加不同的动画效果,再使用css animation中的forwards来使组件固定在结束的位置。核心代码如下:

// cartDropdown.jsx

import React from 'react'
import CartDropdownStyle from './cartDropdown.module.css' export default function CartDropdown(props) {
const {isCartOpen} = props
const animationClass = isCartOpen ? CartDropdownStyle.animation__fadeIn : CartDropdownStyle.animation__fadeOut return (
<div className={animationClass}>
Cart Dropdown
</div>
)
}
/* cartDropdown.module.css */

.animation__fadeIn {
animation: dropdownEnterFromTop .3s forwards ease-out;
} .animation__fadeOut {
animation: dropdownLeaveToTop .3s forwards ease-out;
} @keyframes dropdownEnterFromTop {
0% {
opacity: 0;
visibility: hidden;
transform: translateY(-20px);
}
100% {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
} @keyframes dropdownLeaveToTop {
0% {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
100% {
opacity: 0;
visibility: hidden;
transform: translateY(-20px);
}
}

基本思路很简单,每次需要更改弹框的状态都会更改CartDropdown组件的isCartOpen属性从而重新渲染组件,使之有不同的animation效果。通过设置animation-fill-mode属性为forwards将组件停留在动画的结束状态。

React 组件进入和退出动画实现的更多相关文章

  1. 基于 React 实现一个 Transition 过渡动画组件

    过渡动画使 UI 更富有表现力并且易于使用.如何使用 React 快速的实现一个 Transition 过渡动画组件? 基本实现 实现一个基础的 CSS 过渡动画组件,通过切换 CSS 样式实现简单的 ...

  2. 从工程化角度讨论如何快速构建可靠React组件

    前言 React 的开发也已经有2年时间了,先从QQ的家校群,转成做互动直播,主要是花样直播这一块.切换过来的时候,业务非常繁忙,接手过来的业务比较凌乱,也没有任何组件复用可言. 为了提高开发效率,去 ...

  3. React组件生命周期小结

    React组件生命周期小结 下面所写的,只适合前端的React.(React也支持后端渲染,而且和前端有点小区别,不过我没用过.) 相关函数 简单地说,React Component通过其定义的几个函 ...

  4. 用 nodejs 写一个命令行工具 :创建 react 组件的命令行工具

    用 nodejs 写一个命令行工具 :创建 react 组件的命令行工具 前言 上周,同事抱怨说 react 怎么不能像 angular 那样,使用命令行工具来生成一个组件.对呀,平时工作时,想要创建 ...

  5. 【React】282- 在 React 组件中使用 Refs 指南

    英文:Yomi Eluwande  译文:joking_zhang https://segmentfault.com/a/1190000019277029 使用 React 时,我们的默认思维方式应该 ...

  6. 在 React 组件中使用 Refs 指南

    原文:Fullstack React's Guide to using Refs in React Components作者:Yomi Eluwande译者:博轩 译文:https://segment ...

  7. React 组件性能优化探索实践

    转自:http://www.tuicool.com/articles/Ar6Zruq React本身就非常关注性能,其提供的虚拟DOM搭配上Diff算法,实现对DOM操作最小粒度的改变也是非常的高效. ...

  8. webpack 打包一个简单react组件

    安装Webpack,并加载一个简单的React组件 全局的npm模块安装: npm install -g webpack 安装jsx-loader npm install --save-dev jsx ...

  9. React 组件性能优化

    React组件性能优化 前言 众所周知,浏览器的重绘和重排版(reflows & repaints)(DOM操作都会引起)才是导致网页性能问题的关键.而React虚拟DOM的目的就是为了减少浏 ...

  10. React组件属性部类(propTypes)校验

    React组件属性类型(propTypes)校验 Prop 验证 随着应用不断变大,保证组件被正确使用变得非常有用.为此我们引入propTypes.React.PropTypes 提供很多验证器 (v ...

随机推荐

  1. 关于 ubuntu 22 desktop 安装 网易云音乐无法启动解决办法

    - 报错现象 /opt/netease/netease-cloud-music/netease-cloud-music: /opt/netease/netease-cloud-music/libs/l ...

  2. centos7所有用户循环登录

    1 使用快捷键Ctrl+Alt+F2进入命令终端 2 输入账号密码 3 输入 /usr/bin/sudo 4 输入 startx 那种单用户,改配置的试了没有用

  3. Windows下Zookeeper安装使用

    Windows下Zookeeper安装使用 ZooKeeper是一种分布式协调服务,用于管理大型主机. 在分布式环境中协调和管理服务是一个复杂的过程. ZooKeeper通过其简单的架构和API解决了 ...

  4. [转]sublime text 4注册

    1.打开浏览器进入网站https://hexed.it2.打开sublime text4安装目录选择文件sublime_text.exe3.搜索80 78 05 00 0f 94 c1更改为c6 40 ...

  5. tcpdump在wlan抓包时的可用过滤器

    抓包前使用iw命令创建一个监听模式(monitor)的接口 iw phy phy0 interface add mon0 type monitor tcpdum抓包命令: tcpdump -nei m ...

  6. OS基础-四大基本特征

    现代计算机操作系统的四大基本特性(并发/共享/虚拟/异步) 1.并发性 1.1.并发与并行区别 并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令.并发需要硬件支持,如多流 ...

  7. Java笔记第五弹

    编码表 将字符存储到计算机中----编码:反之,则为解码: GBK编码:最常用的中文码表 GB18030--最新的中文码表 Unicode字符集:业界的一种标准,也称为统一码.万国码 UTF-8编码: ...

  8. 来自我的Moments-实用学习资源或网站

    目录 计算机基础知识 操作系统原理 计算机网络 其他 计算机技术栈 电子技术和嵌入式 计算机专业工作和面试 软件工程师手册(华为资料) 机器人工程师学习计划-硬核-知乎文章 提升效率的工具 BIT T ...

  9. DVWA-SQL Injection(SQL注入)

    SQL Injection,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的.结构,从而达到执行恶意SQL语句的目的. LOW: 代码审计: SQL Injection Source vuln ...

  10. 在asp.net core webapi 中开启swagger

    首先需要安装包 Swashbuckle.AspNetCore 接着在项目中右键属性 接着在Startup 文件中声明一个字段 private string currentAssemblyName = ...