在 React 中条件渲染组件上的 TailwindCSS 动画

Posted

技术标签:

【中文标题】在 React 中条件渲染组件上的 TailwindCSS 动画【英文标题】:TailwindCSS animations on conditionally rendered components in React 【发布时间】:2021-12-20 18:18:57 【问题描述】:

如果我根据某些状态有条件地渲染组件,如何在 React with TailwindCSS 中为其打开和关闭状态之间的转换设置动画?

successMessage && (
              <div className="flex transition-all ease-in-out duration-300 bg-gray-200 w-44 items-center justify-between px-2 rounded">
                <p>Added to watchlist!</p>
                <button onClick=() => setSuccessMessage(false)>X</button>
              </div>
            )

此代码一半有效,但没有动画或过渡期。我该如何解决这个问题?

【问题讨论】:

您可以按照 MB_ 在他们的回答中建议的那样做,或者您可以提供一些实际的淡入淡出动画等。 【参考方案1】:

试试这样的:

  <div className=`flex transition-all ease-in-out duration-300 bg-gray-200 w-44 items-center justify-between px-2 rounded $your_state ? 'opacity-100' : 'opacity-0'`>
   ...
  </div>

【讨论】:

【参考方案2】:

我建议使用 AOS 库来执行此操作,因为您需要做更多的工作才能使用 TailwindCSS。

试试这个

安装 Aos

npm install aos --save

放入你的文件

import React,  useEffect  from "react";
import AOS from 'aos';
import "aos/dist/aos.css";

useEffect(() => 
  AOS.init(
    duration : 1000
  );
, []);

您可以随意更改持续时间。

添加为 html 标签的属性 data-aos="animation_name"

例子

 <div> data-aos="fadeIn" </div>

你可以使用的额外属性

    data-aos="fade-up"
    data-aos-offset="200"
    data-aos-delay="50"
    data-aos-duration="1000"
    data-aos-easing="ease-in-out"
    data-aos-mirror="true"
    data-aos-once="false"
    data-aos-anchor-placement="top-center"

List of all animation

Documentation

【讨论】:

以上是关于在 React 中条件渲染组件上的 TailwindCSS 动画的主要内容,如果未能解决你的问题,请参考以下文章

React中条件渲染和循环

ui:repeat 中条件渲染子类的 PropertyNotFoundException

vue.js中条件渲染中的数组子项

react爬坑之路

关于vue.js中条件渲染的联系

优化 React 中组件的渲染负载