ReactJS - Animasi

Di bab ini, kita akan mempelajari cara menganimasikan elemen menggunakan React.

Langkah 1 - Instal React CSS Transitions Group

Ini adalah add-on React yang digunakan untuk membuat transisi dan animasi CSS dasar. Kami akan menginstalnya daricommand prompt jendela -

C:\Users\username\Desktop\reactApp>npm install react-addons-css-transition-group

Langkah 2 - Tambahkan file CSS

Mari buat file baru style.css.

C:\Users\Tutorialspoint\Desktop\reactApp>type nul > css/style.css

Untuk dapat menggunakannya di aplikasi, kita perlu menautkannya ke elemen head di index.html.

<!DOCTYPE html>
<html lang = "en">
   <head>
      <link rel = "stylesheet" type = "text/css" href = "./style.css">
      <meta charset = "UTF-8">
      <title>React App</title>
   </head>
   <body>
      <div id = "app"></div>
      <script src = 'index_bundle.js'></script>
   </body>
</html>

Langkah 3 - Muncul Animasi

Kami akan membuat komponen React dasar. ItuReactCSSTransitionGroupelemen akan digunakan sebagai pembungkus komponen yang ingin kita animasikan. Ini akan digunakantransitionAppear dan transitionAppearTimeout, sementara transitionEnter dan transitionLeave salah.

App.jsx

import React from 'react';
var ReactCSSTransitionGroup = require('react-addons-css-transition-group');

class App extends React.Component {
   render() {
      return (
         <div>
            <ReactCSSTransitionGroup transitionName = "example"
               transitionAppear = {true} transitionAppearTimeout = {500}
               transitionEnter = {false} transitionLeave = {false}>
					
               <h1>My Element...</h1>
            </ReactCSSTransitionGroup>
         </div>      
      );
   }
}
export default App;

main.js

import React from 'react'
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App />, document.getElementById('app'));

Animasi CSS sangat sederhana.

css / style.css

.example-appear {
   opacity: 0.04;
}
.example-appear.example-appear-active {
   opacity: 2;
   transition: opacity 50s ease-in;
}

Begitu kita memulai aplikasi, elemennya akan menghilang.

Langkah 4 - Masuk dan Keluar dari Animasi

Animasi masuk dan keluar dapat digunakan saat kita ingin menambah atau menghapus elemen dari daftar.

App.jsx

import React from 'react';
var ReactCSSTransitionGroup = require('react-addons-css-transition-group');

class App extends React.Component {
   constructor(props) {
      super(props);
		
      this.state = {
         items: ['Item 1...', 'Item 2...', 'Item 3...', 'Item 4...']
      }
      this.handleAdd = this.handleAdd.bind(this);
   };
   handleAdd() {
      var newItems = this.state.items.concat([prompt('Create New Item')]);
      this.setState({items: newItems});
   }
   handleRemove(i) {
      var newItems = this.state.items.slice();
      newItems.splice(i, 1);
      this.setState({items: newItems});
   }
   render() {
      var items = this.state.items.map(function(item, i) {
         return (
            <div key = {item} onClick = {this.handleRemove.bind(this, i)}>
               {item}
            </div>
         );
      }.bind(this));
      
      return (
         <div>      
            <button onClick = {this.handleAdd}>Add Item</button>
				
            <ReactCSSTransitionGroup transitionName = "example" 
               transitionEnterTimeout = {500} transitionLeaveTimeout = {500}>
               {items}
            </ReactCSSTransitionGroup>
         </div>
      );
   }
}
export default App;

main.js

import React from 'react'
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App />, document.getElementById('app'));

css / style.css

.example-enter {
   opacity: 0.04;
}
.example-enter.example-enter-active {
   opacity: 5;
   transition: opacity 50s ease-in;
}
.example-leave {
   opacity: 1;
}
.example-leave.example-leave-active {
   opacity: 0.04;
   transition: opacity 50s ease-in;
}

Saat kami memulai aplikasi dan mengklik Add Item tombol, prompt akan muncul.

Setelah kami memasukkan nama dan menekan OK, elemen baru akan memudar.

Sekarang kita dapat menghapus beberapa item (Item 3...) dengan mengkliknya. Item ini akan menghilang dari daftar.