- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个相对简单的用例,涉及一组按钮,每个按钮代表一个类别。
当单击这些类别按钮之一时,其相应的子类别将出现在下面的部分中。当您单击这些类别按钮之一时,子类别列表将替换为新的子类别,具体取决于您刚刚单击的类别。
示例如下(如果我单击类别 A):
[Category A(Clicked)] [Category B] [Category C]
_______________________________________
[Sub-Category A1] [Sub-Category A2] [Sub-Category A3]
现在,当我在单击一个类别后单击另一个类别时,就会出现问题。我注意到上一个操作的子类别会在短时间内持续出现在 View 中。例如,这是我在单击类别 A 后单击类别 B 时发生的情况的快照。
[Category A] [Category B (Clicked)] [Category C]
_______________________________________
[Sub-Category B1] [Sub-Category B2] [Sub-Category B3] [Sub-Category A1]
即使我单击类别 B,并且子类别列表被替换,上一个子类别列表(类别 A)中的元素仍会在短时间内保持安装状态(数百毫秒) .
只有当我将子类别部分包装在 ReactCSSTransitionGroup 标记中时,才会发生这种情况。我的每个子类别的键是子类别的字符串名称,因为它们在我的数据库中都是唯一的,所以我认为我的问题与设置的键无关。
这是我的 ReactCSSTransitionGroup 标记的代码:
<ReactCSSTransitionGroup transitionName="products" transitionEnterTimeout={0} transitionLeaveTimeout={0}>
{
this.state.subCategories != null
?
this.state.subCategories.map((subCategoryName, index) => {
return(
<div className="product-sub-category" key={subCategoryName}>
<div className="product-image windows"><div className="overlay"><div className="wrap"><div className="category-title">{subCategoryName}</div><div className="category-subcategories">Sub-Categories: <span className="num">1</span></div></div></div></div>
</div>)
})
:
null
}
</ReactCSSTransitionGroup>
这是我的动画 CSS 文件中的动画代码:
.products-enter {
opacity: 0.01;
}
.products-enter.products-enter-active {
opacity: 1;
transition: opacity 100ms ease-in;
}
.products-leave {
opacity: 1;
}
.products-leave.products-leave-active {
opacity: 0.01;
transition: opacity 100ms ease-in;
}
同样,这只在使用 ReactCSSTransitionGroup 时才会发生。而且视觉上令人不愉快。尽管淡入淡出在技术上是有效的,但由于旧元素会在短时间内徘徊而不是正确卸载,所以它完全被破坏了。
最佳答案
这是设计使然。使用 ReactCSSTransitionGroup 淡入/淡出最适合独立插入和删除的项目列表。对于您的用例来说,它效果不佳。
也许有一个更好的库,但是滚动您自己的“FadeIn”组件非常容易,该组件只是在显示时显示动画,而不是隐藏。它可能更适合您的用例 - 这就是我所做的:
import React, {PropTypes as T} from 'react'
import classnames from 'classnames'
export default class FadeIn extends React.Component {
constructor(...args) {
super(...args)
this.state = {active: false}
}
componentDidMount() {
setTimeout(() => this.setState({active: true}), 0)
}
render() {
const {active} = this.state
return (
<div className={classnames('fade-in', {active}, this.props.className)}>
{this.props.children}
</div>
)
}
}
FadeIn.propTypes = {
className: T.string
}
FadeIn.displayName = 'FadeIn'
少:
.fade-in {
opacity: 0;
&.active {
opacity: 1;
transition: opacity 0.15s ease-in;
}
}
关于javascript - ReactCSSTransitionGroup:即将退出的元素与新安装的元素一起在短时间内保持安装状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41745778/
我听说最好不要从您系统的 Perl 版本所在的 CPAN 安装模块。我知道如何使用命令行安装模块,我只是想知道是否有办法将 CPAN 与系统核心 Perl 分开。 我应该: 下载源代码并专门为这些模块
我听说最好不要从系统的 Perl 版本所在的 CPAN 安装模块。我知道如何使用命令行安装模块,我只是想知道是否有办法将 CPAN 与系统的核心 Perl 分开。 我应该: 下载源代码并专门为这些模块
单独安装 electron 与通过 electron-builder 安装有什么区别?我正在使用 React 构建一个 Electron 应用程序,并且已经找到了一些教程。它们安装 Electron
两者安装有什么区别?我按照安装页面上的说明在全局范围内安装了 webpack,然后我转到了入门指南,据说在那里可以在本地安装 webpack-cli。 CLI = Command Line Inter
我在 OS X Yosemite 上用 PHP 安装了默认的 Apache 服务器,安装了 pear,用 brew 安装了 Solr (brew install solr),现在我正在尝试使用 PEC
我解压并编译了 Ruby 2.1 并安装了几个支持工具。 但是当我安装了 libssl-dev 时,OpenSSL 不会安装。 我在支持 openssl 时遇到这个错误: make: *** No r
我在 android studio 2.3.1 和 gradle 3.2 中设计了 2 到 3 个应用程序。当我从它运行应用程序到任何设备或模拟器时,一切都工作正常。但是当我从构建文件夹中获取该 ap
我注意到我正在读一本书提到通过 apt-get 安装 numpy 和 opencv apt-get install python-numpy python-opencv 但我可以通过以下方式在 pip
我正在尝试在 Windows 8.1 上安装 ansicon。我提取了文件并达到了我需要调用 ansicon -i 的级别。当我在 cmd 中输入此内容并运行 python 脚本时效果很好,但是当我通
我有 linux MINT 17.3 Kernel 4.4.0-81 所有更新可用。 (由于不同的原因,我无法迁移到更新版本的 ubuntu/mint) 我已经通过 PPA 安装了 FFMPEG(不是
尝试在本地运行我的应用程序时出现错误: 我只在 chrome 浏览器中收到此错误。我尝试过不同的东西,但我不确定为什么它是 Chrome 特定的。 最佳答案 我怀疑这不是 Firebase 问题,而是
这是我第一次开发 AngularJS 应用程序并使用脚手架工具 Yeoman ( http://yeoman.io/ )。我想对我的一些图标使用 fontawesome ( http://fortaw
我知道您通常“应该”$ pip install 如果包没有 brew ,但如果有一个你想安装的 python 包,你可以使用 $ pip install或 $ brew install为了?例如,通过
我正在尝试通过 RVM 安装 Ruby 1.9.3。然而,当谈到安装 RubyGems 时,我得到了这个: curl: (22) The requested URL returned error: 4
我是真正提出问题的新手,但你去吧。 我一直在尝试按照安装指南添加 dnsname: https://github.com/containers/dnsname https://github.com/c
Studio更新至0.4.0 建筑产量为“需要1.8版Gradle”;将设置设置为1.8 bin目录; 建立 “要求1.9级”;将设置设置为1.9 bin; 建立 “要求1.8级” 啊。不知道该怎么做
我刚刚注意到 kernel.org 因维护而停机。是否有使用不同镜子的不同公式?或者我可以向 Homebrew 软件添加不同的来源(如 bundler ?)? 谢谢你的帮助! 最佳答案 快速解决方法:
当我运行时: peardev install phpunit/PHPUnit 我得到以下信息: No releases available for package "pear.phpunit.de/P
服务器操作系统为Fedora 24. 64bit。 我想安装 Git 2.6.6。 所以下载源码并安装。 此服务器离线。所以我不使用“yum”。 ./configure --prefix=/usr/l
我正在尝试在我自己的服务器(操作系统:Linux Ubuntu Server 12.04)上安装 OpenEdX,但我遇到了同样的错误。谁能帮帮我? TASK: [ insights | insta
我是一名优秀的程序员,十分优秀!