தமிழ்

useMemo, useCallback, மற்றும் React.memo பயன்படுத்தி ரியாக்ட் செயலிகளின் செயல்திறனை மேம்படுத்துவதற்கான ஒரு முழுமையான வழிகாட்டி. தேவையற்ற மறு-காட்சிகளைத் தடுத்து, பயனர் அனுபவத்தை மேம்படுத்துங்கள்.

ரியாக்ட் செயல்திறன் மேம்படுத்தல்: useMemo, useCallback, மற்றும் React.memo ஆகியவற்றில் தேர்ச்சி பெறுதல்

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

ரியாக்ட் மறு-காட்சிகளைப் புரிந்துகொள்ளுதல்

மேம்படுத்தல் நுட்பங்களுக்குள் நுழைவதற்கு முன், ரியாக்டில் மறு-காட்சிகள் ஏன் நிகழ்கின்றன என்பதைப் புரிந்துகொள்வது முக்கியம். ஒரு கூறின் நிலை (state) அல்லது பண்புகள் (props) மாறும்போது, ரியாக்ட் அந்தக் கூறின் மற்றும், சாத்தியமானால், அதன் குழந்தைக் கூறுகளின் மறு-காட்சியைத் தூண்டுகிறது. ரியாக்ட் உண்மையான DOM-ஐ திறமையாகப் புதுப்பிக்க ஒரு மெய்நிகர் DOM-ஐப் பயன்படுத்துகிறது, ஆனால் அதிகப்படியான மறு-காட்சிகள் சிக்கலான செயலிகளில் செயல்திறனை பாதிக்கக்கூடும். ஒரு உலகளாவிய இ-காமர்ஸ் தளத்தை கற்பனை செய்து பாருங்கள், அங்கு தயாரிப்பு விலைகள் அடிக்கடி புதுப்பிக்கப்படுகின்றன. மேம்படுத்தல் இல்லாமல், ஒரு சிறிய விலை மாற்றம் கூட முழு தயாரிப்புப் பட்டியலிலும் மறு-காட்சிகளைத் தூண்டக்கூடும், இது பயனர் உலாவலைப் பாதிக்கும்.

கூறுகள் ஏன் மறு-காட்சி ஆகின்றன

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

useMemo அறிமுகம்: அதிக செலவாகும் கணக்கீடுகளை மெமோயிஸ் செய்தல்

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

useMemo எப்போது பயன்படுத்த வேண்டும்

useMemo எப்படி வேலை செய்கிறது

useMemo இரண்டு வாதங்களை எடுத்துக்கொள்கிறது:

  1. கணக்கீட்டைச் செய்யும் ஒரு செயல்பாடு.
  2. சார்புகளின் (dependencies) ஒரு வரிசை.

வரிசையில் உள்ள சார்புகளில் ஒன்று மாறும்போது மட்டுமே செயல்பாடு செயல்படுத்தப்படுகிறது. இல்லையெனில், useMemo முன்பு மெமோயிஸ் செய்யப்பட்ட மதிப்பைத் திருப்பித் தரும்.

உதாரணம்: ஃபிபனோச்சி தொடரைக் கணக்கிடுதல்

ஃபிபனோச்சி தொடர் என்பது கணக்கீட்டு ரீதியாக தீவிரமான கணக்கீட்டிற்கு ஒரு சிறந்த எடுத்துக்காட்டாகும். useMemo ஐப் பயன்படுத்தி n-வது ஃபிபனோச்சி எண்ணைக் கணக்கிடும் ஒரு கூறினை உருவாக்குவோம்.


import React, { useState, useMemo } from 'react';

function Fibonacci({ n }) {
  const fibonacciNumber = useMemo(() => {
    console.log('Calculating Fibonacci...'); // கணக்கீடு எப்போது இயங்குகிறது என்பதை விளக்குகிறது
    function calculateFibonacci(num) {
      if (num <= 1) {
        return num;
      }
      return calculateFibonacci(num - 1) + calculateFibonacci(num - 2);
    }
    return calculateFibonacci(n);
  }, [n]);

  return 

Fibonacci({n}) = {fibonacciNumber}

; } function App() { const [number, setNumber] = useState(5); return (
setNumber(parseInt(e.target.value))} />
); } export default App;

இந்த எடுத்துக்காட்டில், n என்ற பண்பு மாறும்போது மட்டுமே calculateFibonacci செயல்பாடு செயல்படுத்தப்படுகிறது. useMemo இல்லாமல், Fibonacci கூறு ஒவ்வொரு மறு-காட்சியிலும், n மாறாமல் இருந்தாலும், இந்த செயல்பாடு செயல்படுத்தப்படும். இந்த கணக்கீடு ஒரு உலகளாவிய நிதி டாஷ்போர்டில் நடப்பதாக கற்பனை செய்து பாருங்கள் - சந்தையின் ஒவ்வொரு நகர்வும் ஒரு முழுமையான மறுகணக்கீட்டை ஏற்படுத்தும், இது குறிப்பிடத்தக்க தாமதத்திற்கு வழிவகுக்கும். useMemo அதைத் தடுக்கிறது.

useCallback அறிமுகம்: செயல்பாடுகளை மெமோயிஸ் செய்தல்

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

useCallback எப்போது பயன்படுத்த வேண்டும்

useCallback எப்படி வேலை செய்கிறது

useCallback இரண்டு வாதங்களை எடுத்துக்கொள்கிறது:

  1. மெமோயிஸ் செய்யப்பட வேண்டிய செயல்பாடு.
  2. சார்புகளின் ஒரு வரிசை.

வரிசையில் உள்ள சார்புகளில் ஒன்று மாறும்போது மட்டுமே செயல்பாடு மீண்டும் உருவாக்கப்படுகிறது. இல்லையெனில், useCallback அதே செயல்பாட்டு நிகழ்வைத் திருப்பித் தரும்.

உதாரணம்: ஒரு பட்டன் கிளிக்கைக் கையாளுதல்

ஒரு கால்பேக் செயல்பாட்டைத் தூண்டும் ஒரு பட்டனுடன் ஒரு கூறினை உருவாக்குவோம். கால்பேக் செயல்பாட்டை மெமோயிஸ் செய்ய useCallback ஐப் பயன்படுத்துவோம்.


import React, { useState, useCallback } from 'react';

function Button({ onClick, children }) {
  console.log('Button re-rendered'); // பட்டன் எப்போது மறு-காட்சி ஆகிறது என்பதை விளக்குகிறது
  return ;
}

const MemoizedButton = React.memo(Button);

function App() {
  const [count, setCount] = useState(0);

  const handleClick = useCallback(() => {
    console.log('Button clicked');
    setCount((prevCount) => prevCount + 1);
  }, []); // வெற்று சார்பு வரிசை என்றால் செயல்பாடு ஒரு முறை மட்டுமே உருவாக்கப்படுகிறது

  return (
    

Count: {count}

Increment
); } export default App;

இந்த எடுத்துக்காட்டில், handleClick செயல்பாடு ஒரு முறை மட்டுமே உருவாக்கப்படுகிறது, ஏனெனில் சார்பு வரிசை காலியாக உள்ளது. count நிலை மாற்றம் காரணமாக App கூறு மறு-காட்சி செய்யப்படும்போது, handleClick செயல்பாடு அப்படியே இருக்கும். React.memo உடன் இணைக்கப்பட்ட MemoizedButton கூறு, அதன் பண்புகள் மாறினால் மட்டுமே மறு-காட்சி செய்யப்படும். onClick பண்பு (handleClick) மாறாமல் இருப்பதால், Button கூறு தேவையற்று மறு-காட்சி செய்யப்படாது. ஒரு ஊடாடும் வரைபடச் செயலியை கற்பனை செய்து பாருங்கள். ஒரு பயனர் ஒவ்வொரு முறை ஊடாடும்போதும், டஜன் கணக்கான பட்டன் கூறுகள் பாதிக்கப்படலாம். useCallback இல்லாமல், இந்த பட்டன்கள் தேவையற்று மறு-காட்சி செய்யப்பட்டு, ஒரு மந்தமான அனுபவத்தை உருவாக்கும். useCallback ஐப் பயன்படுத்துவது ஒரு மென்மையான ஊடாடலை உறுதி செய்கிறது.

React.memo அறிமுகம்: கூறுகளை மெமோயிஸ் செய்தல்

React.memo என்பது ஒரு உயர்-வரிசைக் கூறு (HOC) ஆகும், இது ஒரு செயல்பாட்டுக் கூறினை மெமோயிஸ் செய்கிறது. இது அதன் பண்புகள் மாறவில்லை என்றால், கூறு மறு-காட்சி செய்யப்படுவதைத் தடுக்கிறது. இது கிளாஸ் கூறுகளுக்கான PureComponent ஐப் போன்றது.

React.memo எப்போது பயன்படுத்த வேண்டும்

React.memo எப்படி வேலை செய்கிறது

React.memo ஒரு செயல்பாட்டுக் கூறினைச் சுற்றி, முந்தைய மற்றும் அடுத்த பண்புகளை மேலோட்டமாக ஒப்பிடுகிறது. பண்புகள் ஒரே மாதிரியாக இருந்தால், கூறு மறு-காட்சி செய்யப்படாது.

உதாரணம்: ஒரு பயனர் சுயவிவரத்தைக் காண்பித்தல்

ஒரு பயனர் சுயவிவரத்தைக் காட்டும் ஒரு கூறினை உருவாக்குவோம். பயனரின் தரவு மாறவில்லை என்றால் தேவையற்ற மறு-காட்சிகளைத் தடுக்க React.memo ஐப் பயன்படுத்துவோம்.


import React from 'react';

function UserProfile({ user }) {
  console.log('UserProfile re-rendered'); // கூறு எப்போது மறு-காட்சி ஆகிறது என்பதை விளக்குகிறது
  return (
    

Name: {user.name}

Email: {user.email}

); } const MemoizedUserProfile = React.memo(UserProfile, (prevProps, nextProps) => { // தனிப்பயன் ஒப்பீட்டுச் செயல்பாடு (விருப்பத்தேர்வு) return prevProps.user.id === nextProps.user.id; // பயனர் ஐடி மாறினால் மட்டுமே மறு-காட்சி செய்யவும் }); function App() { const [user, setUser] = React.useState({ id: 1, name: 'John Doe', email: 'john.doe@example.com', }); const updateUser = () => { setUser({ ...user, name: 'Jane Doe' }); // பெயரை மாற்றுதல் }; return (
); } export default App;

இந்த எடுத்துக்காட்டில், user.id பண்பு மாறினால் மட்டுமே MemoizedUserProfile கூறு மறு-காட்சி செய்யப்படும். user பொருளின் பிற பண்புகள் (உதாரணமாக, பெயர் அல்லது மின்னஞ்சல்) மாறினாலும், ஐடி வித்தியாசமாக இல்லாவிட்டால் கூறு மறு-காட்சி செய்யப்படாது. `React.memo`-விற்குள் உள்ள இந்த தனிப்பயன் ஒப்பீட்டுச் செயல்பாடு, கூறு எப்போது மறு-காட்சி செய்யப்பட வேண்டும் என்பதன் மீது நுணுக்கமான கட்டுப்பாட்டை அனுமதிக்கிறது. தொடர்ந்து புதுப்பிக்கப்படும் பயனர் சுயவிவரங்களைக் கொண்ட ஒரு சமூக ஊடக தளத்தைக் கவனியுங்கள். `React.memo` இல்லாமல், ஒரு பயனரின் நிலை அல்லது சுயவிவரப் படத்தை மாற்றுவது, முக்கிய பயனர் விவரங்கள் அப்படியே இருந்தாலும், சுயவிவரக் கூறின் முழு மறு-காட்சிக்கு வழிவகுக்கும். `React.memo` இலக்கு வைக்கப்பட்ட புதுப்பிப்புகளை அனுமதிக்கிறது மற்றும் செயல்திறனை கணிசமாக மேம்படுத்துகிறது.

useMemo, useCallback, மற்றும் React.memo ஆகியவற்றை இணைத்தல்

இந்த மூன்று நுட்பங்களும் ஒன்றாகப் பயன்படுத்தப்படும்போது மிகவும் பயனுள்ளதாக இருக்கும். useMemo அதிக செலவாகும் கணக்கீடுகளை மெமோயிஸ் செய்கிறது, useCallback செயல்பாடுகளை மெமோயிஸ் செய்கிறது, மற்றும் React.memo கூறுகளை மெமோயிஸ் செய்கிறது. இந்த நுட்பங்களை இணைப்பதன் மூலம், உங்கள் ரியாக்ட் செயலியில் தேவையற்ற மறு-காட்சிகளின் எண்ணிக்கையை கணிசமாகக் குறைக்கலாம்.

உதாரணம்: ஒரு சிக்கலான கூறு

இந்த நுட்பங்களை எவ்வாறு இணைப்பது என்பதைக் காட்டும் ஒரு சிக்கலான கூறினை உருவாக்குவோம்.


import React, { useState, useCallback, useMemo } from 'react';

function ListItem({ item, onUpdate, onDelete }) {
  console.log(`ListItem ${item.id} re-rendered`); // கூறு எப்போது மறு-காட்சி ஆகிறது என்பதை விளக்குகிறது
  return (
    
  • {item.text}
  • ); } const MemoizedListItem = React.memo(ListItem); function List({ items, onUpdate, onDelete }) { console.log('List re-rendered'); // கூறு எப்போது மறு-காட்சி ஆகிறது என்பதை விளக்குகிறது return (
      {items.map((item) => ( ))}
    ); } const MemoizedList = React.memo(List); function App() { const [items, setItems] = useState([ { id: 1, text: 'Item 1' }, { id: 2, text: 'Item 2' }, { id: 3, text: 'Item 3' }, ]); const handleUpdate = useCallback((id) => { setItems((prevItems) => prevItems.map((item) => item.id === id ? { ...item, text: `Updated ${item.text}` } : item ) ); }, []); const handleDelete = useCallback((id) => { setItems((prevItems) => prevItems.filter((item) => item.id !== id)); }, []); const memoizedItems = useMemo(() => items, [items]); return (
    ); } export default App;

    இந்த எடுத்துக்காட்டில்:

    இந்த நுட்பங்களின் கலவையானது, கூறுகள் தேவைப்படும்போது மட்டுமே மறு-காட்சி செய்யப்படுவதை உறுதிசெய்கிறது, இது குறிப்பிடத்தக்க செயல்திறன் மேம்பாடுகளுக்கு வழிவகுக்கிறது. ஒரு பெரிய அளவிலான திட்ட மேலாண்மைக் கருவியை கற்பனை செய்து பாருங்கள், அங்கு பணிகளின் பட்டியல்கள் தொடர்ந்து புதுப்பிக்கப்பட்டு, நீக்கப்பட்டு, மறுவரிசைப்படுத்தப்படுகின்றன. இந்த மேம்படுத்தல்கள் இல்லாமல், பணிப் பட்டியலில் ஏதேனும் ஒரு சிறிய மாற்றம் கூட மறு-காட்சிகளின் ஒரு தொடர்ச்சியைத் தூண்டி, செயலியை மெதுவாகவும் பதிலளிக்காததாகவும் ஆக்கும். useMemo, useCallback, மற்றும் React.memo ஆகியவற்றை உத்தியுடன் பயன்படுத்துவதன் மூலம், சிக்கலான தரவு மற்றும் அடிக்கடி புதுப்பிப்புகள் இருந்தபோதிலும் செயலி செயல்திறனுடன் இருக்க முடியும்.

    கூடுதல் மேம்படுத்தல் நுட்பங்கள்

    useMemo, useCallback, மற்றும் React.memo ஆகியவை சக்திவாய்ந்த கருவிகளாக இருந்தாலும், ரியாக்ட் செயல்திறனை மேம்படுத்துவதற்கான ஒரே விருப்பங்கள் அவை அல்ல. கருத்தில் கொள்ள வேண்டிய சில கூடுதல் நுட்பங்கள் இங்கே:

    மேம்படுத்தலுக்கான உலகளாவிய கருத்தாய்வுகள்

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

    முடிவுரை

    ஒரு மென்மையான மற்றும் பதிலளிக்கக்கூடிய பயனர் அனுபவத்தை வழங்குவதற்கு ரியாக்ட் செயலி செயல்திறனை மேம்படுத்துவது மிக முக்கியம். useMemo, useCallback, மற்றும் React.memo போன்ற நுட்பங்களில் தேர்ச்சி பெறுவதன் மூலமும், உலகளாவிய மேம்படுத்தல் உத்திகளைக் கருத்தில் கொள்வதன் மூலமும், நீங்கள் ஒரு பன்முக பயனர் தளத்தின் தேவைகளைப் பூர்த்தி செய்யக்கூடிய உயர் செயல்திறன் கொண்ட ரியாக்ட் செயலிகளை உருவாக்கலாம். செயல்திறன் தடைகளைக் கண்டறிய உங்கள் செயலியை சுயவிவரப்படுத்தவும், இந்த மேம்படுத்தல் நுட்பங்களை உத்தியுடன் பயன்படுத்தவும் நினைவில் கொள்ளுங்கள். முன்கூட்டியே மேம்படுத்த வேண்டாம் – நீங்கள் மிகவும் குறிப்பிடத்தக்க தாக்கத்தை அடையக்கூடிய பகுதிகளில் கவனம் செலுத்துங்கள்.

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