0Pricing
React Academy · Pelajaran

Animasi yang Digerakkan Gestur dengan use-gesture

Gabungkan react-spring dengan @use-gesture/react untuk membuat animasi yang dikendalikan oleh seret, cubit, dan guliran.

Animasi yang Digerakkan Gestur dengan use-gesture adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

@use-gesture/react: Gambaran Umum

@use-gesture/react adalah pustaka pengenalan gestur yang dirancang untuk bekerja mulus dengan react-spring. Pustaka ini mengenali seretan, cubitan, guliran, arahan kursor, gerakan, dan roda, serta menyediakan status gestur yang dinormalisasi yang dapat langsung Anda salurkan ke pengatur pegas untuk interaksi lancar berbasis fisika.

Status Gestur useDrag

Pengait useDrag menjalankan fungsi panggilan balik pada setiap peristiwa seret. Fungsi panggilan balik tersebut menerima objek status gestur dengan properti utama: perpindahan (total perpindahan sejak awal seretan), kecepatan (kecepatan saat ini), arah (1 atau -1 pada setiap sumbu), pertama (bernilai true saat seretan dimulai), terakhir (bernilai true saat seretan berakhir), dan peristiwa (peristiwa DOM mentah).

Fungsi bind()

Semua pengait use-gesture mengembalikan fungsi bind(). Memanggil bind() mengembalikan objek berisi properti penangan peristiwa (onPointerDown, onTouchStart, dll.) yang Anda terapkan pada elemen yang ingin dibuat interaktif. Inilah titik penghubung antara pengenal gestur dan elemen DOM Anda.

Menggabungkan useDrag dengan react-spring

Pola standarnya: buat animasi pegas dengan API imperatif ([springs, api] = useSpring(...)), lalu gunakan useDrag untuk memanggil api.start({ x: movement[0], y: movement[1] }) pada setiap peristiwa seret. Animasi pegas mengikuti gerakan seretan dengan mulus, sehingga menambahkan fisika alami pada pelacakan kursor yang jika tidak demikian akan kaku.

Kembali ke Posisi Awal Saat Dilepas

Saat seretan berakhir (last: true dalam status gestur), biasanya Anda mengembalikan elemen ke titik asalnya. Panggil api.start({ x: 0, y: 0 }) di dalam pemeriksaan if (last). react-spring menganimasikan gerakan kembali dengan fisika pegas — pantulan lembut, bukan pengaturan ulang seketika — sehingga interaksi terasa memuaskan dan alami.

Melempar dengan Kecepatan

Nilai velocity dalam status gestur memungkinkan perilaku lempar. Saat pengguna melepas elemen dengan kecepatan tinggi, Anda dapat melemparkannya ke arah seretan alih-alih mengembalikannya ke posisi awal. Periksa if (last && velocity[0] > threshold), lalu animasikan elemen ke posisi akhirnya di luar layar. Hal ini penting untuk interaksi geser untuk menutup.

Batas Seretan dan Pembatasan Nilai

Untuk membatasi perpindahan seretan di dalam wadah, batasi nilai perpindahan sebelum meneruskannya ke animasi pegas: x: Math.max(-maxX, Math.min(maxX, movement[0])). Atau, gunakan opsi bounds bawaan use-gesture: useDrag(handler, { bounds: { left: -100, right: 100 } }) untuk membatasi status gestur secara otomatis.

Pola Geser untuk Menutup

Implementasi seluler untuk geser-menutup: gunakan useDrag untuk melacak perpindahan horizontal. Jika pengguna melepas dengan kecepatan di atas ambang OR telah berpindah lebih dari setengah lebar layar, animasikan kartu ke luar layar (api.start({ x: window.innerWidth })), lalu hapus kartu dari daftar. Jika tidak, kembalikan kartu ke tengah.

usePinch untuk Interaksi Pembesaran

usePinch mengenali gestur cubit dua jari pada layar sentuh dan gerakan roda dengan Ctrl pada komputer desktop. Status gestur mencakup scale (tingkat pembesaran saat ini relatif terhadap awal cubitan) dan origin (titik pusat cubitan). Hubungkan gestur ini ke animasi pegas yang melacak skala untuk membuat interaksi pembesaran pada gambar atau peta menjadi mulus dan terbatas.

useHover dan useMove

useHover dijalankan saat penunjuk memasuki atau meninggalkan elemen, serta menyediakan nilai boolean active. useMove melacak posisi tetikus di dalam elemen dan menyediakan koordinat yang dinormalisasi. Keduanya berguna untuk efek arahkan kursor magnetis, saat elemen sedikit bergeser mendekati kursor ketika kursor mendekat.

Menggabungkan Beberapa Gestur

Pengait use-gesture dapat disusun bersama. Anda dapat menggunakan useDrag dan usePinch pada elemen yang sama: const bindDrag = useDrag(...); const bindPinch = usePinch(...), lalu terapkan kedua fungsi bind: ...bindDrag() ...bindPinch(). use-gesture menangani pembedaan antara jenis gestur secara otomatis.

Kegunaan Fungsi bind()

Apa yang dilakukan fungsi bind() yang dikembalikan oleh pengait use-gesture?

Rangkuman Pelajaran: Integrasi use-gesture

@use-gesture/react menyediakan useDrag, usePinch, useScroll, useHover, dan useMove. Setiap pengait mengembalikan fungsi bind() yang hasil penerapan spread-nya menghubungkan peristiwa gestur ke elemen DOM. Status gestur menyediakan perpindahan, kecepatan, arah, pertama, dan terakhir. Gabungkan dengan api.start() imperatif dari react-spring untuk animasi interaktif berbasis fisika. Gunakan kecepatan untuk lempar dan tutup, serta batas untuk membatasi perpindahan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Animasi yang Digerakkan Gestur dengan use-gesture” gratis?

Ya — teks lengkap “Animasi yang Digerakkan Gestur dengan use-gesture” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Animasi yang Digerakkan Gestur dengan use-gesture”?

Gabungkan react-spring dengan @use-gesture/react untuk membuat animasi yang dikendalikan oleh seret, cubit, dan guliran. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Animasi yang Digerakkan Gestur dengan use-gesture” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar React Spring: Hook useSpring
  2. Komponen Animasi dan Interpolasi Gaya
  3. useTrail dan useChain untuk Urutan
  4. Animasi yang Digerakkan Gestur dengan use-gesture
← Kembali ke React Academy