U dinamičnom svijetu razvoja Reacta, kuke su revolucionirale način na koji obrađujemo stanja i nuspojave u funkcionalnim komponentama. Među raznim vrstama događaja kojima možemo upravljati, događaji miša posebno su važni jer nam omogućuju stvaranje interaktivnih i privlačnih korisničkih sučelja. Kao vodeći dobavljač kuka, razumijemo zamršenost upotrebe kuka za događaje miša u Reactu, au ovom ćemo blogu istražiti kako ih učinkovito iskoristiti.
Razumijevanje događaja miša u Reactu
Prije nego što zaronite u kukice, važno je razumjeti različite događaje miša dostupne u Reactu. React pruža skup sintetičkih događaja koji su kompatibilni s različitim preglednicima i oponašaju izvorne DOM događaje. Neki od najčešće korištenih događaja miša uključujuonMouseEnter,onMouseLeave,onMouseDown,onMouseUp, ionClick.


onMouseEnter: Ovaj događaj se pokreće kada pokazivač miša uđe u element. Korisno je za stvaranje efekata lebdenja, kao što je prikazivanje dodatnih informacija kada korisnik lebdi iznad slike ili gumba.onMouseLeave: NasuprotonMouseEnter, ovaj se događaj pokreće kada pokazivač miša napusti element. Može se koristiti za skrivanje dodatnih informacija koje su prikazane naonMouseEnter.onMouseDown: Aktivira se kada korisnik pritisne tipku miša dok je pokazivač iznad elementa. Ovo se može koristiti za radnje poput pokretanja operacije povuci i ispusti.onMouseUp: Pokreće se kada korisnik otpusti tipku miša dok je pokazivač iznad elementa. Može se upariti saonMouseDownda dovršite radnju povuci i ispusti.onClick: KombinacijaonMouseDownionMouseUpdogađaji,onClickkoristi se za upravljanje klikovima na elemente, kao što je slanje obrasca ili navigacija na novu stranicu.
KorištenjeuseStateKuka za događaje miša
TheuseStatehook je jedan od najosnovnijih hookova u Reactu. Omogućuje nam dodavanje stanja funkcionalnim komponentama. Možemo koristitiuseStateza upravljanje promjenama stanja koje pokreću događaji miša.
Uzmimo primjer stvaranja jednostavnog gumba koji mijenja boju kada mišem prijeđete iznad njega.
import React, { useState } from'react'; const HoverButton = () => { const [isHovered, setIsHovered] = useState(false); const handleMouseEnter = () => { setIsHovered(true); }; const handleMouseLeave = () => { setIsHovered(false); }; const buttonStyle = { backgroundColor: isHovered? 'plava' : 'siva', boja: 'bijela', ispuna: '10px 20px', obrub: 'ništa', radijus obruba: '5px' }; return ( <button style={buttonStyle} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} > Hover Me </button> ); }; izvezi zadani HoverButton;
U ovom primjeru koristimouseStatekuka za upravljanjeisHoveredstanje. Kada miš uđe u gumb (onMouseEnterdogađaj), postavili smoisHovereddopravi, a kada miš ode (onMouseLeavedogađaj), vratili smo ga nalažno. Na temelju vrijednostiisHovered, mijenjamo boju pozadine gumba.
KorištenjeuseEffectKuka za događaje miša
TheuseEffectkuka se koristi za izvođenje nuspojava u funkcionalnim komponentama. Možemo ga koristiti za rukovanje događajima miša u složenijim scenarijima, kao što je dodavanje globalnih slušatelja događaja.
Pretpostavimo da želimo otkriti kada korisnik klikne izvan modala. Možemo koristitiuseEffectkuka za dodavanje globalnog slušatelja događaja klika u dokument.
import React, { useState, useEffect, useRef } from'react'; const Modal = () => { const [isOpen, setIsOpen] = useState(false); const modalRef = useRef(null); const openModal = () => { setIsOpen(true); }; const closeModal = () => { setIsOpen(false); }; useEffect(() => { const handleClickOutside = (event) => { if (modalRef.current &&!modalRef.current.contains(event.target)) { closeModal(); } }; document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside}, []); return ( <div> <button onClick={openModal}>Otvori modalno</button> {isOpen && ( <div ref={modalRef} className="modal"> <div className="modal-content"> <h2>Modalni naslov</h2> <p>Modalni sadržaj ide ovdje.</p> <button onClick={closeModal}>Zatvori</button> </div> </div> )} </div> ); }; izvoz zadanog Modalnog;
U ovom primjeru koristimouseEffectkuka za dodavanje amousedownslušatelj događaja u dokumentu. Kada korisnik klikne izvan modala (određuje se provjerom nije li cilj klika unutar modala pomoćusadržimetoda), zatvaramo modal. Također čistimo slušatelja događaja u povratnoj funkcijiuseEffectkako biste izbjegli curenje memorije.
Prilagođene kuke za događaje miša
Kao dobavljač kuka, potičemo upotrebu prilagođenih kuka za enkapsulaciju složene logike povezane s događajima miša. Prilagođena kuka je JavaScript funkcija čije ime počinje skoristitii može pozvati druge kuke.
Kreirajmo prilagođenu kuku tzvuseMousePositionkoji prati položaj miša na ekranu.
import React, { useState, useEffect } from'react'; const useMousePosition = () => { const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 }); const handleMouseMove = (event) => { setMousePosition({ x: event.clientX, y: event.clientY }); }; useEffect(() => { window.addEventListener('mousemove', handleMouseMove); return () => { window.removeEventListener('mousemove', handleMouseMove); }; }, []); vratiti mousePosition; }; const MousePositionTracker = () => { const { x, y } = useMousePosition(); return ( <div> <p>Pozicija miša: ({x}, {y})</p> </div> ); }; izvoz zadanog MousePositionTracker;
Ova prilagođena kukauseMousePositionkoristi seuseStateiuseEffectkuke za praćenje položaja miša. Dodaje apomicanje mišaslušatelj događaja u prozor i ažurira stanje trenutnim koordinatama miša. Kuka se može ponovno koristiti u više komponenti za praćenje položaja miša.
Naša ponuda proizvoda
Kao dobavljač udica, nudimo širok asortiman visokokvalitetnih udica za različite primjene. Ako tražite kuke za pravokutne cijevi, pogledajte našeKuka za pravokutne cijevi. Ove kuke su dizajnirane da osiguraju sigurnu i pouzdanu vezu za pravokutne cijevi, osiguravajući stabilnost i izdržljivost.
Za aplikacije na policama supermarketa, našKuka za police supermarketaizvrstan je izbor. Ove su kuke posebno dizajnirane za držanje proizvoda na policama supermarketa, što kupcima olakšava pregledavanje i odabir artikala.
Kontaktirajte nas za nabavu
Ako ste zainteresirani za naše hook proizvode ili imate pitanja o korištenju hookova za događaje miša u Reactu, voljeli bismo čuti vaše mišljenje. Bilo da ste razvojni programer malih razmjera ili veliko poduzeće, možemo pružiti prave spojnice za vaše potrebe. Kontaktirajte nas kako bismo započeli raspravu o nabavi i pronašli najbolja rješenja za vaše projekte.
Reference
- Reagirajte službenu dokumentaciju na kuke
- JavaScript DOM vodiči za rukovanje događajima
