Css 过渡不适用于 React 中的条件渲染

Posted

技术标签:

【中文标题】Css 过渡不适用于 React 中的条件渲染【英文标题】:Css transition not working on conditional rendering in React 【发布时间】:2021-07-04 05:28:51 【问题描述】:

我有一个简单的复选框,我想使用 React 显示和隐藏一个 div 以及一些转换延迟。不使用 React 时我也能达到同样的效果。但是,当我在单击复选框时使用条件渲染来渲染 div 时。它没有显示效果。 这是我到目前为止的代码

import  useState  from "react";
import "./styles.css";

export default function App() 
  const [checkBox, setCheckBox] = useState(false);
  return (
    <div className="App">
      <input
        type="checkbox"
        checked=checkBox
        onChange=() => setCheckBox(!checkBox)
      ></input>
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
      checkBox && (
        <div
          style=
            opacity: 1,
            transition: "height 2s",
            transitionTimingFunction: "ease-in"
          
        >
          Hey the checkbox is checked
        </div>
      )
    </div>
  );


代码沙盒链接 - https://codesandbox.io/s/reverent-cartwright-gk11s?file=/src/App.js:0-659

非常感谢任何帮助

【问题讨论】:

【参考方案1】:

它对我有用。 试试这样。

import  useState  from "react";
import "./styles.css";

export default function App() 
  const [checkBox, setCheckBox] = useState(false);
  return (
    <div className="App">
      <input
        type="checkbox"
        checked=checkBox
        onClick=() => setCheckBox(!checkBox)
      ></input>
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>

      <div className=checkBox ? "animate show" : "animate">
        Hey the checkbox is checked
      </div>
    </div>
  );

并且在 css 文件中...

.animate 
  height: 0px;
  overflow: hidden;
  transition: height 0.5s;

.show 
  height: 18px;

请在此确认。

https://codesandbox.io/s/goofy-moon-ipe7t

【讨论】:

以上是关于Css 过渡不适用于 React 中的条件渲染的主要内容,如果未能解决你的问题,请参考以下文章

CSS 动画,不适用于禁用的引导按钮

CSS 过渡不适用于 chrome 45 中的 scale(0) + 硬件加速?

CSS 过渡不适用于 FF 中的 top 属性

React:使用 Animate on Scroll 库条件渲染 CSS 类

在react中设置css样式以及条件语句写法

如何有条件地渲染我的 CSS 类的一部分