Ich lerne React + Redux und ich verstehe nicht die richtige Art, die Animationen zu machen. Lass uns mit einem Beispiel sprechen:Redux/Flux (mit ReactJS) und Animation
Zum Beispiel habe ich eine Liste und möchte Elemente auf Klick entfernen. Das ist super einfach, wenn ich dort keine Animationseffekte habe: Versand REMOVE_ITEM
Aktion auf Klick, Reducer entfernt den Artikel aus dem Store und reagiert neu rendert HTML.
Fügen Sie eine Animation zum Löschen der Werbebuchung beim Klicken hinzu. Also, wenn Benutzer auf ein Element klickt, möchte ich einen fantastischen Effekt der Werbebuchung entfernen und ... wie? ich von mehreren Möglichkeiten denken kann, wie es geht:
1) Auf Klick ich REMOVE_ITEM
Aktion versenden, dann markieren Minderer ein Element als goingToBeDeleted
in Store, dann reagieren, dieses Element mit einer Klasse von .fancy-dissolve-animation
macht und ich führe einen Timer um die zweite Aktion zu versenden REMOVE_ITEM_COMPLETED
. Ich mag diese Idee nicht, weil es immer noch unklar ist, wie man hier JS-Animationen hinzufügt (zum Beispiel mit TweenMax
) und ich einen JS-Timer zum Rendern verwende, wenn die CSS-Animation endet. Klingt nicht gut.
2) Ich verschicke ITEM_REMOVE_PROGRESS
Aktionen mit einem Intervall von ~ 30ms, und speichern enthält einige "Wert", der den aktuellen Stand der Animation darstellt. Ich mag es auch nicht, da es mich zwingt, den Laden ~ 120 mal für ~ 2 Sekunden Animation zu kopieren (sagen wir, ich möchte glatte 60 fps Animation) und das ist einfach eine Verschwendung von Speicher.
3) Erstellen Sie eine Animation und senden Sie REMOVE_ITEM
erst nach dem Ende der Animation. Das ist die am besten geeignete Art und Weise, die ich mir vorstellen kann, aber trotzdem möchte ich, dass die Dinge im Speicher geändert werden, direkt nachdem der Benutzer die Aktion ausgeführt hat. Zum Beispiel kann die Animation länger als ein paar Sekunden dauern und REMOVE_ITEM
könnte mit einem Backend synchronisiert werden - es gibt keinen Grund, die Beendigung der Animation auf einen Backend-API-Aufruf zu warten.
Danke fürs Lesen - irgendwelche Vorschläge?
Animationen, die keinen Dateneinfluss haben, sollten außerhalb des Redux-Speichers liegen. –
@MaciejSikora Ja, stimme völlig zu - so soll es sein. Aber ich habe immer noch keine Ahnung, wie ich das erreichen kann. :( – shlajin