2015-09-19 10 views

Odpowiedz

16

pewno! Wystarczy użyć warianty enter i leave (choć zawsze należy uczynić składnik TransitionGroup):

var TheThing = React.createClass({ 
    render() { 
     var component; 
     if (this.props.visible) { 
      component = <div className="the-thing">The Thing</div>; 
     } 

     return (
      <ReactCSSTransitionGroup transitionName="thing"> 
       {component} 
      </ReactCSSTransitionGroup> 
     ) 
    } 
}); 

i

.thing-enter { 
    opacity: 0.01; 
    transition: opacity 1s ease-in; 
} 

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

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

.thing-leave.thing-leave-active { 
    opacity: 0.01; 
} 

Przykład: https://jsfiddle.net/BinaryMuse/3fkso0kq/

+0

Ach! Byłem pod wrażeniem 'enter' /' leave' był dla listy przedmiotów, a 'appear' był dla pojedynczego przedmiotu. Jaki jest sens "pojawiania się" wtedy i jak dawka się różni? – ffxsam

+1

@ffxsam 'appear' służy do początkowego wyglądu elementu, jeśli użyjesz' transitionAppear' - to znaczy, jeśli 'TransitionGroup' i jego dzieci * są już zamontowane *, gdy komponent zawierający je montuje, nie będzie animuj, chyba że ustawione jest 'transitionAppear'. Spróbuj ustawić '{thingIsVisible: true}' w twoim przykładzie, a następnie w moim. –

Powiązane problemy