2016-03-02 10 views
5

Mam komponent React.js, który próbuję "wyciszyć" przy użyciu przejść React CSS. Działa dobrze, aby zaniknąć, ale kiedy klikam, aby usunąć obiekt, po prostu znika natychmiast (zamiast przyjemnego znikającego efektu).Zmiany w pliku React.js nie działają w celu "zanikania"

Kod:

<ReactCSSTransitionGroup 
    transitionName="example" 
    transitionAppear={true} 
    transitionLeave={true} 
    transitionEnterTimeout={600} 
    transitionAppearTimeout={600} 
    transitionLeaveTimeout={300} 
> 
    some object 
</ReactCSSTransitionGroup> 

CSS:

/React przejścia/

.example-enter { 
    opacity: 0.01; 
    transition: opacity .5s ease-in; 
} 

.example-enter.example-enter-active { 
    opacity: 1; 
} 

.example-leave { 
    opacity: 1; 
    transition: opacity 1s ease-in; 
} 

.example-leave.example-leave-active { 
    opacity: 0.01; 
    transition: opacity 300ms ease-in; 
} 

.example-appear { 
    opacity: 0.01; 
    transition: opacity 1s ease-in; 
} 

.example-appear.example-appear-active { 
    opacity: 1; 
} 
+0

To działa dobrze? Czy na pewno nie ma innych błędów? – Guy

+0

Brak błędów. Blaknięcie działa dobrze. Ale kiedy "znika", nie ma efektu zanikania. – user1072337

+2

Nie widzę żadnych problemów podczas próby reprodukcji. Zobacz [tutaj] (http://codepen.io/guyfedwards/pen/zqvRZg?editors=0110) – Guy

Odpowiedz

0

znalazłem problem w swoim CSS prostu usunąć skomentował wiersz:

.example-leave.example-leave-active { 
    opacity: 0.01; 
    /*transition: opacity 300ms ease-in;*/ 
} 
+0

Nie widzę, w jaki sposób linia ta mogła spowodować natychmiastowe zniknięcie obiektu. I myślę, że czas przejścia powinien być inny dla różnych przejść. – ArneHugo

+0

@ArneHugo kod to [usłyszeć] (http://codepen.io/guyfedwards/pen/zqvRZg?editors=0110) i zmodyfikowałem kod i zobaczyłem wynik. kiedy komentuję wspomniane linie pokazujące i ukrywające są absolutnie takie same. – Hamid

+0

Tak, to ma sens, ponieważ usunięta linia zmienia czas trwania przejścia na 300 ms, gdy opuszcza stan aktywny. Jednak wydaje się, że jest to zgodne z projektem. Ponadto, z czasem trwania przejścia 300ms, element nie powinien "znikać natychmiast", ale zanika ponad 300 ms (co jest wystarczającą ilością czasu, aby zobaczyć, jak zanika). Pytający prawdopodobnie ma jakiś inny błąd w swoim kodzie, który powoduje jego problem. – ArneHugo

6

Here is a working jsfiddle demo

var {CSSTransitionGroup} = React.addons; 

var Fade = React.createClass({ 
    getInitialState() { 
     return { 
      items: ["Hello"] 
     } 
    }, 
    clickHandler (e) { 
     this.setState({items:[]}); 
    }, 
    render: function() { 
     var {items} = this.state; 
     return (
      <CSSTransitionGroup transitionName="example" 
     transitionAppear={true} 
     transitionLeave={true} 
     transitionEnterTimeout={600} 
     transitionAppearTimeout={600} 
     transitionLeaveTimeout={300}> 
      {items.map(item => <div onClick={this.clickHandler}>{item}</div>)} 
     </CSSTransitionGroup> 
     ); 
    } 
}); 

ReactDOM.render(<Fade/>, document.getElementById('container')); 

Chyba próbowali usunąć węzeł podrzędny za pomocą manipulacji DOM. To przejście będzie działać tylko wtedy, gdy zezwolisz na ponowne renderowanie poprzez reakcję na metodę renderowania.

Powiązane problemy