CSSTransition组件appear属性疑问

来源:4-13 使用 react-transition-group 实现动画(1)

console_man

2019-03-29

老师,你好,如果我在css中只添加了.fade-appear{opacity: 0;},没有添加.fade-appear-active,为什么页面上第一次渲染出来时hello会出现闪烁的问题。

组件代码

import React, { Component } from "react";
import { CSSTransition } from "react-transition-group";

import "./Test.css";

class Test extends Component {
    constructor(props) {
        super(props);

       this.state = {
            show: true
        };
    }

    render() {
        return (
            <React.Fragment>
                <CSSTransition
                    in={this.state.show}
                    timeout={10000}
                    classNames="alert"
                    appear={true}
                >
                    <span>hello world</span>
                </CSSTransition>

                <button onClick={this.handleOnClick.bind(this)}>toggle</button>
            </React.Fragment>
           
        );
    }

    handleOnClick() {
        this.setState((prevState) => ({
            show: !prevState.show
        }));
    }

    handleOnEnter() {
        console.log("onEnter");
    }

}

export default Test;

css代码
.alert-appear {
    opacity: 0;
}
.alert-appear-active {
    
}

.alert-enter {
    opacity: 0;
  }

.alert-enter-active {
    opacity: 1;
    transition: opacity 30000ms;
}

.alert-enter-done {
    opacity: 1;
}

.alert-exit {
    opacity: 1;
}
.alert-exit-active {
    opacity: 0;
    transition: opacity 300ms;
}
  
写回答

1回答

Dell

2019-03-30

因为出现的时候,你先把它隐藏,但其他的动画又把它显示出来,这就会造成闪烁。

0
0

React零基础入门到实战,完成企业级项目简书网站开发

主流新技术 React-redux,React-router4,贯穿基础语法

5275 学习 · 2496 问题

查看课程