2016-03-07 28 views
9

Mam ReactCSSTransitionGroup działa dobrze (myślę), nowo zamontowany składnik zanika w całej okazałości.ReactCSSTransitionGroup tylko dobrze z animacją w nowym komponencie?

Problemem jest to, że składnik jest wymienić tylko nagle znika problem dla mnie, bo w końcu chciałbym, że moja przemiana i komponenty z rzutni ...

I nie wydają się zobaczyć każdy sposób mówienia pozostawiającemu elementowi, jak elegancko zniknąć.

Czy brakuje mi czegoś, czy też ReactCSSTransitionGroup może animować tylko wchodzący komponent?

UPDATE

kod poniżej:

import React from "react"; 
import ReactDOM from "react-dom"; 
import { Router, Route, IndexRoute, hashHistory, Link } from "react-router"; 
import ReactCSSTransitionGroup from "react-addons-css-transition-group"; 


class PageOne extends React.Component { 
    render() { 
    return (
     <ReactCSSTransitionGroup transitionName="example" transitionAppear={true} transitionAppearTimeout={500} transitionEnterTimeout={500} transitionLeaveTimeout={500}> 
     <div> 
      HI FROM PAGE ONE<br /> 
      <br /> 
      <Link to="two">Take me to Page Two</Link> 
     </div> 
     </ReactCSSTransitionGroup> 
    ); 
    } 
} 
class PageTwo extends React.Component { 
    render() { 
    return (
     <ReactCSSTransitionGroup transitionName="example" transitionAppear={true} transitionAppearTimeout={500} transitionEnterTimeout={500} transitionLeaveTimeout={500}> 
     <div> 
      HELLO FROM PAGE TWO<br /> 
      <br /> 
      <Link to="/">Go back to Page One</Link> 
     </div> 
     </ReactCSSTransitionGroup> 
    ); 
    } 
} 


const app = document.getElementById('app'); 
ReactDOM.render(
    <Router history={hashHistory}> 
    <Route path="/" component={PageOne}></Route> 
    <Route path="two" component={PageTwo}></Route> 
    </Router>, 
app); 

I CSS:

.example-enter { 
    opacity: 0.01; 
} 
.example-enter.example-enter-active { 
    opacity: 1; 
    transition: opacity 500ms ease-in; 
} 
.example-leave { 
    opacity: 1; 
} 
.example-leave.example-leave-active { 
    opacity: 0.01; 
    transition: opacity 300ms ease-in; 
} 
+0

Wyjaśnienie na [reagować przejścia] (https://facebook.github.io/react/docs/animation.html) wyjaśnia, że ​​można mieć na przemian pojawiają się wprowadzić, a także zostawić. Jeśli potrzebujesz dodatkowej pomocy, możesz udostępnić kod? – wintvelt

+0

Zaktualizowano wpis z minimalnym minimalnym kodem, aby pokazać, co zamierzam. Powyższy kod nie powoduje zanikania/zanikania podczas montowania i odmontowywania komponentów. – Stefan

Odpowiedz

2

Stworzyłem bin który działa dobrze dla komponentów jest zamontowany/odmontowany. Spójrz i daj mi znać, jeśli jest podobny do tego, co robisz i nadal nie jesteś w stanie rozwiązać problemu.

+0

To może być moja wina w próbie opisania problemu. To, co faktycznie próbuję osiągnąć, to przejście między stronami za pomocą ReactCSSTransitionGroup. – Stefan

+0

Kolejne pytanie może być, czy ReactCSSTransitionGroup jest czymś, co powinno zostać użyte na początku strony? – Stefan

+0

Podjąłem kod do absolutnego minimum, proszę spojrzeć powyżej, aby zobaczyć, co mam na myśli. Komponenty nie powodują zanikania/zanikania podczas montowania/odmontowywania. Czy ReactCSSTransitionGroup nadaje się tylko do przenoszenia takich rzeczy, jak elementy listy? Czy muszę próbować obsługiwać strony takie jak pozycje na liście? – Stefan