Ako zdieľať logiku medzi komponentmi pomocou vlastných háčikov?

Aug 08, 2025

Zanechajte správu

Zdieľanie logiky medzi komponentmi je zásadným aspektom budovania škálovateľných a udržiavateľných aplikácií React. Ako dodávateľ háčikov som bol svedkom z prvej ruky sily vlastných háčikov pri dosahovaní tohto cieľa. V tomto blogovom príspevku sa ponorím, ako zdieľať logiku medzi komponentmi pomocou vlastných háčikov, ponúkam praktické poznatky a príklady skutočného sveta.

Pochopenie vlastných háčikov

Predtým, ako preskúmame, ako zdieľať logiku, stručne pochopte, aké vlastné háčiky sú. Vlastné háčiky sú funkcie JavaScript, ktoré začínajú slovom „Používanie“ a môžu volať iné háčiky. Umožňujú vám extrahovať logiku komponentov do opakovane použiteľných funkcií. Zvážte napríklad scenár, v ktorom viac komponentov musí spracovať validáciu vstupu. Namiesto duplikácie logiky validácie v každom komponente môžeme vytvoriť vlastný háčik.

import {usestate} z'react '; const wouthInputValidation = (inicilValue = '') => {const [value, setValue] = usestate (inicilValue); const [isvalid, setisValid] = usestate (true); const handlechange = (e) => {const inputValue = E.Target.Value; setValue (inputValue); // Jednoduché overenie Príklad: Skontrolujte, či vstup nie je prázdny setISValid (inputValue.TRIM ()! == ''); }; return {value, isvalid, handlechange}; }; exportovať predvolené použitieInputValidtion;

V tomto vlastnom háčiku zapuzdíme logiku riadenia štátu a validácie vstupu. Každý komponent, ktorý potrebuje zvládnuť validáciu vstupu, môže teraz použiť tento háčik namiesto implementácie logiky od nuly.

Zdieľanie stavovej logiky

Jedným z prípadov primárneho použitia pre vlastné háčiky je zdieľanie stavovej logiky medzi komponentmi. Štátna logika zahŕňa riadenie štátu v rámci komponentu. Pozrime sa, ako môžeme zdieľať stavovú logiku pomocou vlastných háčikov.

Predstavte si, že máme viac komponentov, ktoré potrebujú zvládnuť viditeľnosť modalu. Na zvládnutie tejto logiky môžeme vytvoriť vlastný háčik.

import {usestate} z'react '; const usemodalvisibility = () => {const [isvisible, setISVisible] = usestate (false); const showmodal = () => {setISVisible (true); }; const hideModal = () => {setISVisible (false); }; return {isvisible, showmodal, hideodal}; }; export predvolenú USEModalVisibility;

Teraz môže tento vlastný háčik používať každý komponent, ktorý potrebuje spravovať viditeľnosť modalu.

import reagovať z'react '; import USEMOdalVisibility z „./USEMODALVISILIBY“; const modalComponent = () => {const {isvisible, showModal, hideDal} = usemodalVisibility (); return (<div> <tlačidlo onClick = {ShowModal}> Zobraziť modal </button> {isvisible && (<div classname = "modal"> <p> modálny obsah tu prechádza </p> </tlačidlo OnClick = {hideModal }> zatvorte modal </button> </div>)} </div>); }; exportovať predvolený modalComponent;

Použitím vlastného háčika sme úspešne zdieľali stavovú logiku riadenia viditeľnosti modalu medzi komponentmi.

Zdieľanie strany - logika efektu

Vlastné háčiky sú tiež vynikajúce na zdieľanie strany - efektovej logiky. Vedľajšie - efekty zahŕňajú veci, ako je načítavanie údajov, predplatné a manipulácie s DOM.

Povedzme, že máme viac komponentov, ktoré musia načítať údaje z API. Môžeme vytvoriť vlastný háčik na spracovanie logiky načítania údajov.

import {usestate, useEffect} z'react '; constAtAfetching = (url) => {const [dáta, setData] = usestate (null); const [Isloading, setisloading] = usestate (true); const [error, setterror] = usestate (null); Použitie Effect (() => {const fetchdata = async () => {try {const response = await fetch (url); if (! response.ok) {throw new Error ('Network Response nebol OK');} const result =}}; fetchData (); return {data, iSloading, Error}; }; export predvoleného použitého s použitím;

Teraz môže tento vlastný háčik použiť každý komponent, ktorý potrebuje načítať údaje z rozhrania API.

import reagovať z'react '; Import s použitými laptitaching z './Unudatafetching'; const dataComponent = () => {const {data, iSloading, Error} = použitéatafetching ('https://api.example.com/data'); if (isLoading) {return <p> načítava ... </p>; } if (error) {return <p> error: {error.Message} </p>; } return (<div> {data && <p> {json.Stringify (dáta, null, 2)} </pre>} </div>); }; exportovať predvolený DataComponent;

Praktické aplikácie v priemysle príslušenstva v kúpeľni

Ako dodávateľ háčikov chápem dôležitosť praktických aplikácií. Napríklad v priemysle príslušenstva v kúpeľni môžeme použiť vlastné háčiky na správu stavu zoznamov produktov.

Povedzme, že máme komponent, ktorý zobrazuje zoznamKúpeľňové doplnky uterákya ďalší komponent, ktorý zobrazujeZlaté kúpeľňové háčiky. Môžeme vytvoriť vlastný háčik na správu filtrovania a triedenia týchto produktov.

new england bathroom accessoriesmatte black bathroom accessory set

import {usestate} z'react '; const woutsProductFiltering = (počiatočnéProducts) => {const [produkty, setProducts] = usestate (počiatočnéProducts); const [Filter, setFilter] = usestate (''); const handlefilterChange = (e) => {const filterValue = E.Target.Value; setFilter (FilterValue); const filterdProducts = počiatočnéProducts.filter (produkt => produkt.name.tolowerCase (). Zahŕňa (FilterValue.tolowerCase ())); setprodukty (filtrované produkty); }; return {produkty, filter, runnerfilterChange}; }; export predvoleného použitiaProductFiltering;

Teraz môžu komponenty háčikov uterákov aj zlatých kúpeľňových háčikov použiť tento vlastný háčik na správu filtrovania produktov.

Záver a výzva na akciu

Záverom je, že vlastné háčiky sú výkonným nástrojom na zdieľanie logiky medzi komponentmi. Zvyšujú opätovnú použiteľnosť kódu, udržiavateľnosť a zvyšujú škálovateľné aplikácie React. Ako dodávateľ Hooks sa zaväzujem poskytovať vysokokvalitné riešenia na zdieľanie logiky vo vašich projektoch.

Ak máte záujem dozvedieť sa viac o tom, ako môžu naše vlastné háčiky prospieť vášmu podnikaniu, alebo ak chcete začať diskusiu o obstarávaní, neváhajte a oslovte. Sme tu, aby sme vám pomohli vybudovať lepšie aplikácie React s efektívnym zdieľaním logiky.

Odkazy

  • React Oficiálna dokumentácia o vlastných háčikoch
  • „React: Up and Beh“ od Stoyan Stefanov a Eve Porcello

Zaslať požiadavku