தமிழ்

கஸ்டம் ஹூக்குகளைப் பயன்படுத்தி உங்கள் ரியாக்ட் பயன்பாடுகளில் மீண்டும் பயன்படுத்தக்கூடிய லாஜிக்கின் ஆற்றலைத் திறந்திடுங்கள். தூய்மையான, பராமரிக்க எளிதான குறியீட்டிற்கு கஸ்டம் ஹூக்குகளை உருவாக்குவது மற்றும் பயன்படுத்துவது எப்படி என்பதை அறியுங்கள்.

கஸ்டம் ஹூக்குகள்: ரியாக்டில் மீண்டும் பயன்படுத்தக்கூடிய லாஜிக் பேட்டர்ன்கள்

ரியாக்ட் ஹூக்குகள், ஃபங்ஷனல் காம்போனென்ட்களுக்கு ஸ்டேட் மற்றும் லைஃப்சைக்கிள் அம்சங்களை அறிமுகப்படுத்தி, நாம் ரியாக்ட் காம்போனென்ட்களை எழுதும் விதத்தில் ஒரு புரட்சியை ஏற்படுத்தின. அவை வழங்கும் பல நன்மைகளில், கஸ்டம் ஹூக்குகள் பல காம்போனென்ட்களுக்கு இடையே லாஜிக்கைப் பிரித்தெடுத்து மீண்டும் பயன்படுத்துவதற்கான ஒரு சக்திவாய்ந்த வழிமுறையாக தனித்து நிற்கின்றன. இந்த வலைப்பதிவு இடுகை கஸ்டம் ஹூக்குகளின் உலகிற்குள் ஆழமாகச் சென்று, அவற்றின் நன்மைகள், உருவாக்கம் மற்றும் நடைமுறை எடுத்துக்காட்டுகளுடன் அவற்றின் பயன்பாட்டை ஆராயும்.

கஸ்டம் ஹூக்குகள் என்றால் என்ன?

சுருக்கமாக, ஒரு கஸ்டம் ஹூக் என்பது "use" என்ற வார்த்தையுடன் தொடங்கும் ஒரு ஜாவாஸ்கிரிப்ட் ஃபங்ஷன் ஆகும், இது மற்ற ஹூக்குகளை அழைக்க முடியும். அவை காம்போனென்ட் லாஜிக்கை மீண்டும் பயன்படுத்தக்கூடிய ஃபங்ஷன்களாக பிரித்தெடுக்க உங்களை அனுமதிக்கின்றன. ரெண்டர் ப்ராப்ஸ், ஹையர்-ஆர்டர் காம்போனென்ட்கள் அல்லது பிற சிக்கலான பேட்டர்ன்களைப் பயன்படுத்தாமல், ஸ்டேட்ஃபுல் லாஜிக், சைடு எஃபெக்ட்ஸ் அல்லது பிற சிக்கலான நடத்தைகளைப் பகிர்வதற்கு இது ஒரு சக்திவாய்ந்த வழியாகும்.

கஸ்டம் ஹூக்குகளின் முக்கிய பண்புகள்:

கஸ்டம் ஹூக்குகளைப் பயன்படுத்துவதன் நன்மைகள்

கஸ்டம் ஹூக்குகள் ரியாக்ட் டெவலப்மென்ட்டில் பல குறிப்பிடத்தக்க நன்மைகளை வழங்குகின்றன:

உங்கள் முதல் கஸ்டம் ஹூக்கை உருவாக்குதல்

ஒரு நடைமுறை உதாரணத்துடன் ஒரு கஸ்டம் ஹூக்கை உருவாக்குவதை விளக்குவோம்: விண்டோ அளவைக் கண்காணிக்கும் ஒரு ஹூக்.

உதாரணம்: useWindowSize

இந்த ஹூக் உலாவியின் தற்போதைய அகலம் மற்றும் உயரத்தை வழங்கும். விண்டோ மறுஅளவாக்கப்படும்போது இந்த மதிப்புகளையும் இது புதுப்பிக்கும்.

import { useState, useEffect } from 'react';

function useWindowSize() {
  const [windowSize, setWindowSize] = useState({
    width: window.innerWidth,
    height: window.innerHeight,
  });

  useEffect(() => {
    function handleResize() {
      setWindowSize({
        width: window.innerWidth,
        height: window.innerHeight,
      });
    }

    window.addEventListener('resize', handleResize);

    // Remove event listener on cleanup
    return () => window.removeEventListener('resize', handleResize);
  }, []); // Empty array ensures that effect is only run on mount

  return windowSize;
}

export default useWindowSize;

விளக்கம்:

  1. தேவையான ஹூக்குகளை இறக்குமதி செய்தல்: நாம் ரியாக்டிலிருந்து useState மற்றும் useEffect ஐ இறக்குமதி செய்கிறோம்.
  2. ஹூக்கை வரையறுத்தல்: பெயரிடும் மரபுக்கு இணங்க useWindowSize என்ற ஃபங்ஷனை உருவாக்குகிறோம்.
  3. ஸ்டேட்டை துவக்குதல்: விண்டோவின் ஆரம்ப அகலம் மற்றும் உயரத்துடன் windowSize ஸ்டேட்டை துவக்க useState ஐப் பயன்படுத்துகிறோம்.
  4. நிகழ்வு கேட்பானை அமைத்தல்: விண்டோவில் ஒரு ரீசைஸ் நிகழ்வு கேட்பானைச் சேர்க்க useEffect ஐப் பயன்படுத்துகிறோம். விண்டோ மறுஅளவாக்கப்படும்போது, handleResize ஃபங்ஷன் windowSize ஸ்டேட்டைப் புதுப்பிக்கிறது.
  5. சுத்தம் செய்தல்: காம்போனென்ட் அன்மவுன்ட் ஆகும் போது நிகழ்வு கேட்பானை அகற்ற useEffect இலிருந்து ஒரு கிளீனப் ஃபங்ஷனைத் திருப்பி அனுப்புகிறோம். இது மெமரி லீக்குகளைத் தடுக்கிறது.
  6. மதிப்புகளைத் திருப்புதல்: இந்த ஹூக் windowSize ஆப்ஜெக்ட்டைத் திருப்பி அனுப்புகிறது, அதில் விண்டோவின் தற்போதைய அகலம் மற்றும் உயரம் உள்ளது.

காம்போனென்டில் கஸ்டம் ஹூக்கைப் பயன்படுத்துதல்

இப்போது நாம் நமது கஸ்டம் ஹூக்கை உருவாக்கிவிட்டோம், அதை ஒரு ரியாக்ட் காம்போனென்டில் எவ்வாறு பயன்படுத்துவது என்று பார்ப்போம்.

import React from 'react';
import useWindowSize from './useWindowSize';

function MyComponent() {
  const { width, height } = useWindowSize();

  return (
    

Window width: {width}px

Window height: {height}px

); } export default MyComponent;

விளக்கம்:

  1. ஹூக்கை இறக்குமதி செய்தல்: நாம் useWindowSize கஸ்டம் ஹூக்கை இறக்குமதி செய்கிறோம்.
  2. ஹூக்கை அழைத்தல்: காம்போனென்டிற்குள் useWindowSize ஹூக்கை அழைக்கிறோம்.
  3. மதிப்புகளை அணுகுதல்: width மற்றும் height மதிப்புகளைப் பெற, திரும்பப் பெறப்பட்ட ஆப்ஜெக்ட்டை டீஸ்ட்ரக்சர் செய்கிறோம்.
  4. மதிப்புகளை ரெண்டர் செய்தல்: காம்போனென்டின் UI இல் அகலம் மற்றும் உயர மதிப்புகளை ரெண்டர் செய்கிறோம்.

useWindowSize ஐப் பயன்படுத்தும் எந்தவொரு காம்போனென்டும் விண்டோ அளவு மாறும்போது தானாகவே புதுப்பிக்கப்படும்.

மேலும் சிக்கலான உதாரணங்கள்

கஸ்டம் ஹூக்குகளுக்கான சில மேம்பட்ட பயன்பாட்டு வழக்குகளை ஆராய்வோம்.

உதாரணம்: useLocalStorage

இந்த ஹூக் லோக்கல் ஸ்டோரேஜிலிருந்து தரவை எளிதாக சேமிக்கவும் மீட்டெடுக்கவும் உங்களை அனுமதிக்கிறது.

import { useState, useEffect } from 'react';

function useLocalStorage(key, initialValue) {
  // State to store our value
  // Pass initial value to useState so logic is only executed once
  const [storedValue, setStoredValue] = useState(() => {
    try {
      // Get from local storage by key
      const item = window.localStorage.getItem(key);
      // Parse stored json or if none return initialValue
      return item ? JSON.parse(item) : initialValue;
    } catch (error) {
      // If error also return initialValue
      console.log(error);
      return initialValue;
    }
  });

  // Return a wrapped version of useState's setter function that ...
  // ... persists the new value to localStorage.
  const setValue = (value) => {
    try {
      // Allow value to be a function so we have same API as useState
      const valueToStore = value instanceof Function ? value(storedValue) : value;
      // Save to local storage
      window.localStorage.setItem(key, JSON.stringify(valueToStore));
      // Save state
      setStoredValue(valueToStore);
    } catch (error) {
      // A more advanced implementation would handle the error case
      console.log(error);
    }
  };

  useEffect(() => {
    try {
      const item = window.localStorage.getItem(key);
      setStoredValue(item ? JSON.parse(item) : initialValue);
    } catch (error) {
      console.log(error);
    }
  }, [key, initialValue]);

  return [storedValue, setValue];
}

export default useLocalStorage;

பயன்பாடு:

import React from 'react';
import useLocalStorage from './useLocalStorage';

function MyComponent() {
  const [name, setName] = useLocalStorage('name', 'Guest');

  return (
    

Hello, {name}!

setName(e.target.value)} />
); } export default MyComponent;

உதாரணம்: useFetch

இந்த ஹூக் ஒரு API இலிருந்து தரவைப் பெறுவதற்கான லாஜிக்கை உள்ளடக்கியது.

import { useState, useEffect } from 'react';

function useFetch(url) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    async function fetchData() {
      try {
        const response = await fetch(url);
        if (!response.ok) {
          throw new Error(`HTTP error! status: ${response.status}`);
        }
        const json = await response.json();
        setData(json);
        setLoading(false);
      } catch (error) {
        setError(error);
        setLoading(false);
      }
    }

    fetchData();
  }, [url]);

  return { data, loading, error };
}

export default useFetch;

பயன்பாடு:

import React from 'react';
import useFetch from './useFetch';

function MyComponent() {
  const { data, loading, error } = useFetch('https://jsonplaceholder.typicode.com/todos/1');

  if (loading) return 

Loading...

; if (error) return

Error: {error.message}

; return (

Title: {data.title}

Completed: {data.completed ? 'Yes' : 'No'}

); } export default MyComponent;

கஸ்டம் ஹூக்குகளுக்கான சிறந்த நடைமுறைகள்

உங்கள் கஸ்டம் ஹூக்குகள் பயனுள்ளதாகவும் பராமரிக்கக்கூடியதாகவும் இருப்பதை உறுதிசெய்ய, இந்த சிறந்த நடைமுறைகளைப் பின்பற்றவும்:

தவிர்க்க வேண்டிய பொதுவான இடர்பாடுகள்

மேம்பட்ட பேட்டர்ன்கள்

கஸ்டம் ஹூக்குகளை இணைத்தல்

மேலும் சிக்கலான லாஜிக்கை உருவாக்க கஸ்டம் ஹூக்குகளை ஒன்றாக இணைக்கலாம். உதாரணமாக, பெறப்பட்ட தரவை லோக்கல் ஸ்டோரேஜில் தானாகவே சேமிக்க useLocalStorage ஹூக்கை useFetch ஹூக்குடன் இணைக்கலாம்.

ஹூக்குகளுக்கு இடையில் லாஜிக்கைப் பகிர்தல்

பல கஸ்டம் ஹூக்குகள் பொதுவான லாஜிக்கைப் பகிர்ந்தால், அந்த லாஜிக்கை ஒரு தனி யூட்டிலிட்டி ஃபங்ஷனாகப் பிரித்தெடுத்து, இரண்டு ஹூக்குகளிலும் மீண்டும் பயன்படுத்தலாம்.

கஸ்டம் ஹூக்குகளுடன் கான்டெக்ஸ்டைப் பயன்படுத்துதல்

குளோபல் ஸ்டேட்டை அணுகவும் புதுப்பிக்கவும் கஸ்டம் ஹூக்குகளை ரியாக்ட் கான்டெக்ஸ்டுடன் இணைந்து பயன்படுத்தலாம். இது பயன்பாட்டின் குளோபல் ஸ்டேட்டை அறிந்த மற்றும் அதனுடன் தொடர்பு கொள்ளக்கூடிய மீண்டும் பயன்படுத்தக்கூடிய காம்போனென்ட்களை உருவாக்க உங்களை அனுமதிக்கிறது.

நிஜ-உலக உதாரணங்கள்

நிஜ-உலக பயன்பாடுகளில் கஸ்டம் ஹூக்குகளை எவ்வாறு பயன்படுத்தலாம் என்பதற்கான சில உதாரணங்கள் இங்கே:

உதாரணம் : வரைபடம் அல்லது டெலிவரி சேவைகள் போன்ற பன்முக கலாச்சார பயன்பாடுகளுக்கான useGeolocation ஹூக்

import { useState, useEffect } from 'react';

function useGeolocation() {
  const [location, setLocation] = useState({
    latitude: null,
    longitude: null,
    error: null,
  });

  useEffect(() => {
    if (!navigator.geolocation) {
      setLocation({
        latitude: null,
        longitude: null,
        error: 'Geolocation is not supported by this browser.',
      });
      return;
    }

    const watchId = navigator.geolocation.watchPosition(
      (position) => {
        setLocation({
          latitude: position.coords.latitude,
          longitude: position.coords.longitude,
          error: null,
        });
      },
      (error) => {
        setLocation({
          latitude: null,
          longitude: null,
          error: error.message,
        });
      }
    );

    return () => navigator.geolocation.clearWatch(watchId);
  }, []);

  return location;
}

export default useGeolocation;

முடிவுரை

கஸ்டம் ஹூக்குகள் தூய்மையான, மீண்டும் பயன்படுத்தக்கூடிய, மற்றும் மேலும் பராமரிக்கக்கூடிய ரியாக்ட் குறியீட்டை எழுதுவதற்கான ஒரு சக்திவாய்ந்த கருவியாகும். சிக்கலான லாஜிக்கை கஸ்டம் ஹூக்குகளில் உள்ளடக்குவதன் மூலம், உங்கள் காம்போனென்ட்களை எளிதாக்கலாம், குறியீடு நகலெடுப்பைக் குறைக்கலாம், மற்றும் உங்கள் பயன்பாடுகளின் ஒட்டுமொத்த கட்டமைப்பை மேம்படுத்தலாம். மேலும் வலுவான மற்றும் அளவிடக்கூடிய ரியாக்ட் பயன்பாடுகளை உருவாக்க கஸ்டம் ஹூக்குகளை ஏற்றுக்கொண்டு அவற்றின் திறனைத் திறந்திடுங்கள்.

உங்கள் தற்போதைய குறியீட்டுத் தளத்தில் பல காம்போனென்ட்களில் லாஜிக் மீண்டும் மீண்டும் பயன்படுத்தப்படும் பகுதிகளை அடையாளம் காண்பதன் மூலம் தொடங்குங்கள். பின்னர், அந்த லாஜிக்கை கஸ்டம் ஹூக்குகளாக மறுசீரமைக்கவும். காலப்போக்கில், உங்கள் டெவலப்மென்ட் செயல்முறையை விரைவுபடுத்தும் மற்றும் உங்கள் குறியீட்டின் தரத்தை மேம்படுத்தும் மீண்டும் பயன்படுத்தக்கூடிய ஹூக்குகளின் ஒரு நூலகத்தை நீங்கள் உருவாக்குவீர்கள்.

சிறந்த நடைமுறைகளைப் பின்பற்றவும், பொதுவான இடர்பாடுகளைத் தவிர்க்கவும், மற்றும் கஸ்டம் ஹூக்குகளிலிருந்து அதிகப் பலனைப் பெற மேம்பட்ட பேட்டர்ன்களை ஆராயவும் நினைவில் கொள்ளுங்கள். பயிற்சி மற்றும் அனுபவத்துடன், நீங்கள் கஸ்டம் ஹூக்குகளில் ஒரு மாஸ்டர் ஆகவும், மேலும் திறமையான ரியாக்ட் டெவலப்பராகவும் மாறுவீர்கள்.