首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactCSSTransitionGroup不起作用

ReactCSSTransitionGroup不起作用
EN

Stack Overflow用户
提问于 2016-06-25 13:20:00
回答 2查看 941关注 0票数 2

我对ReactCSSTransitionGroup有一些麻烦。当用户点击页面上的按钮时,我想用一些花哨的动画显示某种Modal形式。这是代码:

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import AppConfig from './AppConfig';

export default class AppTop extends React.Component {
    constructor(props) {
        super(props);
        this.state = { openConfig: false };
    }
    toggleConfig() {
        this.setState({ openConfig: !this.state.openConfig });
    }
    render() {
        // only shows up openConfig is true
        const domAppConfig = this.state.openConfig ? <AppConfig ... /> : '';

        return (
            <div>
                ... //some elements
                <button onClick={this.toggleConfig.bind(this)}>Config</button>
                { domAppConfig }
            </div>
        );
    }
}

这是AppTop组件。您可以看到呈现内部的按钮组件,单击此按钮,openConfig状态将切换。现在这是AppConfig组件:

代码语言:javascript
复制
import React from 'react';
import ReactCSSTransitionGroup from 'react-addons-css-transition-group';

export default class AppConfig extends React.Component {
    render() {
        return (
            <ReactCSSTransitionGroup
                transitionName="anim-app-config"
                transitionEnterTimeout={300}
                transitionLeaveTimeout={300}
            >
                <div id="app-config">
                    <h1>App Config</h1>
                    <p>Helloworld!</p>
                </div>
            </ReactCSSTransitionGroup>
        );
    }
}

组件很简单,只需打印一些文本。这就是‘..anim app-config’的风格:

代码语言:javascript
复制
.anim-app-config-enter {
    opacity: .1;
}
.anim-app-config-enter.anim-app-config-enter-active {
    opacity: 1;
    transition: opacity 300ms ease-in;
}
.anim-app-config-leave {
    opacity: 1;
}
.anim-app-config-leave.anim-app-config-leave-active {
    opacity: .1;
    transition: opacity 300ms ease-in;
}

当我运行这个应用程序时,动画不起作用。只显示组件并立即隐藏,没有动画。我对此进行了搜索,并尝试在AppConfig组件中添加一个密钥,但没有起作用。再包装一个div也不起作用。添加transitionAppear={true}也不适用于我。

使用ReactCSSTransitionGroup组件是错误的吗?还是我错过了什么?很难添加动画对我的反应,所以请给我一些建议。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-25 13:35:14

你应该在你的应用程序中有ReactCSSTransitionGroup,因为它会呈现或不呈现。MAking在AppConfig中不会有任何动画,因为它将呈现为一个直接的组件。

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import AppConfig from './AppConfig';

export default class AppTop extends React.Component {
    constructor(props) {
        super(props);
        this.state = { openConfig: false };
    }
    toggleConfig() {
        this.setState({ openConfig: !this.state.openConfig });
    }
    render() {
        // only shows up openConfig is true
        const domAppConfig = this.state.openConfig ? <AppConfig ... /> : '';

        return (
            <div>
                ... //some elements
                <button onClick={this.toggleConfig.bind(this)}>Config</button>
                        <ReactCSSTransitionGroup
                transitionName="anim-app-config"
                transitionEnterTimeout={300}
                transitionLeaveTimeout={300}
            >
                {domAppconfig}
            </ReactCSSTransitionGroup>
            </div>
        );
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-06-25 13:26:38

您必须为ReactCSSTransitionGroup的所有子级提供关键属性,即使只呈现单个项。这就是反应将如何决定哪些孩子已经进入,离开,或留下。

尝试将类似key="1"的内容添加到<div id="app-config">中,看看它是否有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38028951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档