9
votes

Comment ajouter une bibliothèque d'animation de ReactJS et animer .CSS à animer

J'ai cette liste simple TODO,

Je dois ajouter des animations de bibliothèque d'animate.css lors de l'ajout et de la suppression. Je suis vraiment nouveau à réagir. J'ai lu la documentation, mais il est vraiment difficile de comprendre,

C'est une question qui demande de l'aide pour coder.

http://jsfiddle.net/johnthrethird/nxcyc/7/ xxx


0 commentaires

5 Réponses :


3
votes

voir https://facebook.github.io/react/docs/animation.html

Vous pouvez utiliser réacteurTtransitiongroup code> et utiliser les rappels pour configurer les classes d'animate.css sur les nœuds enfants. P>

Notez que vous ne pouvez pas utiliser directement ReactCstransitionGroup Code> En raison de la convention de nom de classe Il a: vous devez contrôler les noms de classe d'animation afin de suivre la convention de réacte. Je veux dire .TransitionName-Enter-active code> est ce que réactecstransitiongroup code> met sur le nœud pour animer, pendant que vous auriez besoin de quelque chose comme .nanate zoomin code>.

edit fort> p>

Selon Ce commit / problème je vois que vous pouvez maintenant personnaliser tout le ReactCsstransitionGroup code> Names de classe. P>

Regardez les PROPTYPES: P>

var TodoList = React.createClass({
  getInitialState: function() {
      var todos = [  {text: "Init Todo1"}  ,  {text: "Init Todo2"}   ];
      return {todos: todos}; 
  },

  add: function() {
      var todos = this.state.todos;
      todos.push({text: "New!"});
      this.setState({todos: todos});
  },
  remove: function() {
      var todos = this.state.todos;
      todos.pop();
      this.setState({todos: todos});
  },

  render: function() {
    var todos = this.state.todos.map(function(todo, index) {
      return <Todo key={index} todo={todo}/>
    });
    return (
        <div>
            <div onClick={this.add}>Add</div>
            <div onClick={this.remove}>Remove</div>
            <br/>
            <div>
                <ReactCSSTransitionGroup transitionName={{enter: "animated bounce", enterActive: "animated bounce", leave: "animated tada",leaveActive: "animated tada"}}>
                    {todos}
                </ReactCSSTransitionGroup>
            </div>
        </div>
    );
  }
});

var Todo = React.createClass({
  render: function() {
    return <div>{this.props.todo.text}</div>;
  }
});


3 commentaires

Pouvez-vous vous fournir plus d'informations comment faire cela?


@ Panczo Fondamentalement, l'idée est de copier le groupe de réactcstransition et de faire les modifications dont vous avez besoin.


Mon problème est lié à cette question, peut-être que vous savez quelque chose de plus à ce sujet? pile lien



4
votes

Sébastien, vous étiez sur la bonne voie, mais je pense que vous avez mal compris entre VS Enteractive:

Fiddle de travail:

http://jsfiddle.net/mjv2y58o/ xxx

Votre proposition pour permettre à plusieurs noms de classe est toujours valide, comme Il serait utile pour les classes utilitaires telles que infinis , mais il n'est pas nécessaire d'utiliser l'animate.css avec réact 0,14.

Cependant, bon nombre d'animations d'entrée d'Animate.css Ne jouez pas bien avec réaction, en particulier dans Safari. Il y a un bref délai après que le composant soit ajouté à la DOM et avant la démarrage de l'animation, donc à l'entrée, vous obtiendrez un éclairage du composant avant de se cacher et d'être animé en vue.


0 commentaires

2
votes

Il suffit de trouver une solution pour cela.

Il ne fonctionne pas 100% doucement, mais il semble vraiment beau dans certains composants: xxx

mettre la classe animée sur l'enfant ÉLÉMENTS.

Il est également important de conserver le transitenterime à 1000. C'est le temps qu'il faut pour l'animation d'Animate.css à courir. Réagir a besoin de savoir que. J'ai défini le transitlelevetimeout à 1 parce que je me suis préoccupé par la levée. Vous devrez probablement modifier cela à vos besoins.


0 commentaires

7
votes

Un vieux fil mais je pense avoir une solution facile et directe à l'avant pour cela.

Je l'ai fait de cette façon, j'ai téléchargé le animeate.css du fournisseur et écrit mon < Code> styles.css Importation animeate.css comme ci-dessous. xxx

Notez que j'utilise les animations de Animate.css dans la classe générée par réact. Le réactcstransitiongroup est comme ci-dessous. xxx


0 commentaires

0
votes

J'ai eu du mal à le faire fonctionner avec une version plus récente de réacteur-transition-group (v4.x.x), à la fin, c'est le code:

Remarque: J'utilise des noms Animate.css V4 et les noms de classe sont légèrement différents de V3 xxx

J'utilise le code ci-dessus pour afficher les boutons de contrôle sur la souris Déplacer et les masquer après un délai d'attente et le Unmountonexit Prop est très important pour Cacher le composant après sa transition de sortie


0 commentaires