தமிழ்

ரியாக்ட் ரெஃப்ஸ் பற்றிய விரிவான வழிகாட்டி, useRef மற்றும் createRef ஆகியவற்றில் கவனம் செலுத்துகிறது. உலகளாவிய பயன்பாடுகளில் திறமையான காம்போனென்ட் மேலாண்மை மற்றும் DOM அணுகலுக்கு ஒவ்வொன்றையும் எப்படி, எப்போது பயன்படுத்துவது என்பதை அறிக.

ரியாக்ட் ரெஃப்ஸ்: useRef மற்றும் createRef பற்றிய தெளிவான விளக்கம்

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

ரியாக்ட் ரெஃப்ஸ்-ஐப் புரிந்துகொள்ளுதல்

ஒரு Ref (reference என்பதன் சுருக்கம்) என்பது ஒரு ரியாக்ட் அம்சமாகும், இது ஒரு DOM நோட் அல்லது ஒரு ரியாக்ட் காம்போனென்ட்டை நேரடியாக அணுக உங்களை அனுமதிக்கிறது. இது குறிப்பாக உங்களுக்குத் தேவைப்படும்போது பயனுள்ளதாக இருக்கும்:

ரியாக்ட் ஒரு அறிவிப்பு அணுகுமுறையை ஊக்குவித்தாலும், UI ஆனது ஸ்டேட் மற்றும் ப்ராப்ஸ் மூலம் நிர்வகிக்கப்படுகிறது, சில சூழ்நிலைகளில் நேரடி கையாளுதல் அவசியமாகிறது. ரியாக்ட்டின் அறிவிப்பு தன்மைக்கும், கட்டாய DOM செயல்பாடுகளுக்கும் இடையிலான இடைவெளியைக் குறைக்க ரெஃப்ஸ் ஒரு வழியை வழங்குகிறது.

createRef: கிளாஸ் காம்போனென்ட் அணுகுமுறை

createRef என்பது ரியாக்ட் வழங்கும் ஒரு முறையாகும். இது முதன்மையாக கிளாஸ் காம்போனென்ட்களுக்குள் ரெஃப்ஸ்களை உருவாக்கப் பயன்படுகிறது. ஒவ்வொரு முறையும் ஒரு கிளாஸ் காம்போனென்ட் உருவாக்கப்படும்போது, createRef ஒரு புதிய ரெஃப் ஆப்ஜெக்டை உருவாக்குகிறது. இது காம்போனென்ட்டின் ஒவ்வொரு நிகழ்வும் அதன் சொந்த தனித்துவமான ரெஃப்-ஐ கொண்டிருப்பதை உறுதி செய்கிறது.

தொடரியல் மற்றும் பயன்பாடு

createRef-ஐப் பயன்படுத்த, முதலில் உங்கள் கிளாஸ் காம்போனென்ட்டில் ஒரு ரெஃப்-ஐ அறிவிக்கிறீர்கள், பொதுவாக கன்ஸ்ட்ரக்டரில். பின்னர், ref பண்பைப் பயன்படுத்தி ஒரு DOM உறுப்பு அல்லது ஒரு காம்போனென்ட்டுடன் ரெஃப்-ஐ இணைக்கிறீர்கள்.


class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.myRef = React.createRef();
  }

  componentDidMount() {
    // Access the DOM element after the component mounts
    this.myRef.current.focus();
  }

  render() {
    return ;
  }
}

இந்த எடுத்துக்காட்டில், this.myRef ஆனது React.createRef() ஐப் பயன்படுத்தி உருவாக்கப்படுகிறது. பின்னர் அது உள்ளீட்டு உறுப்பின் ref பண்பிற்கு ஒதுக்கப்படுகிறது. காம்போனென்ட் மவுன்ட் ஆன பிறகு (componentDidMount இல்), நீங்கள் this.myRef.current ஐப் பயன்படுத்தி உண்மையான DOM நோடை அணுகலாம் மற்றும் அதன் மீது செயல்பாடுகளைச் செய்யலாம் (இந்த விஷயத்தில், உள்ளீட்டில் கவனம் செலுத்துதல்).

எடுத்துக்காட்டு: ஒரு உள்ளீட்டு புலத்தில் கவனம் செலுத்துதல்

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


class FocusInput extends React.Component {
  constructor(props) {
    super(props);
    this.inputRef = React.createRef();
  }

  componentDidMount() {
    this.inputRef.current.focus();
  }

  render() {
    return (
      
); } }

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

createRef உடன் முக்கியக் கருத்தாய்வுகள்

useRef: ஃபங்ஷனல் காம்போனென்ட் ஹூக்

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

தொடரியல் மற்றும் பயன்பாடு

useRef-ஐப் பயன்படுத்துவது நேரடியானது. நீங்கள் useRef ஹூக்கை அழைக்கிறீர்கள், ஒரு ஆரம்ப மதிப்பைக் கடத்துகிறீர்கள். இந்த ஹூக் ஒரு .current பண்புடன் ஒரு ஆப்ஜெக்டைத் திருப்பித் தருகிறது, அதை நீங்கள் மதிப்பை அணுகவும் மாற்றவும் பயன்படுத்தலாம்.


import React, { useRef, useEffect } from 'react';

function MyFunctionalComponent() {
  const myRef = useRef(null);

  useEffect(() => {
    // Access the DOM element after the component mounts
    if (myRef.current) {
      myRef.current.focus();
    }
  }, []);

  return ;
}

இந்த எடுத்துக்காட்டில், useRef(null) என்பது null என்ற ஆரம்ப மதிப்புடன் ஒரு ரெஃப்-ஐ உருவாக்குகிறது. useEffect ஹூக், காம்போனென்ட் மவுன்ட் ஆன பிறகு DOM உறுப்பை அணுகப் பயன்படுகிறது. myRef.current பண்பு, உள்ளீட்டு உறுப்பிற்கான ரெஃபரன்ஸைக் கொண்டுள்ளது, இது அதில் கவனம் செலுத்த உங்களை அனுமதிக்கிறது.

எடுத்துக்காட்டு: முந்தைய ப்ராப் மதிப்புகளைக் கண்காணித்தல்

useRef-க்கான ஒரு சக்திவாய்ந்த பயன்பாட்டு நிகழ்வு, ஒரு ப்ராப்பின் முந்தைய மதிப்பைக் கண்காணிப்பதாகும். ரெஃப்ஸ்களில் ஏற்படும் மாற்றங்கள் மறு-ரெண்டர்களைத் தூண்டாததால், UI-ஐப் பாதிக்காமல் ரெண்டர்கள் முழுவதும் நிலைநிறுத்த விரும்பும் மதிப்புகளைச் சேமிக்க அவற்றைப் பயன்படுத்தலாம்.


import React, { useRef, useEffect } from 'react';

function PreviousValueComponent({ value }) {
  const previousValue = useRef();

  useEffect(() => {
    previousValue.current = value;
  }, [value]);

  return (
    

Current Value: {value}

Previous Value: {previousValue.current}

); }

இந்த எடுத்துக்காட்டில், previousValue.current ஆனது value ப்ராப்பின் முந்தைய மதிப்பைச் சேமிக்கிறது. useEffect ஹூக், value ப்ராப் மாறும்போதெல்லாம் ரெஃப்-ஐப் புதுப்பிக்கிறது. இது தற்போதைய மற்றும் முந்தைய மதிப்புகளை ஒப்பிட உங்களை அனுமதிக்கிறது, இது மாற்றங்களைக் கண்டறிவதற்கோ அல்லது அனிமேஷன்களைச் செயல்படுத்துவதற்கோ பயனுள்ளதாக இருக்கும்.

useRef உடன் முக்கியக் கருத்தாய்வுகள்

useRef மற்றும் createRef: ஒரு விரிவான ஒப்பீடு

இப்போது நாம் useRef மற்றும் createRef இரண்டையும் தனித்தனியாக ஆராய்ந்துவிட்டோம், அவற்றின் முக்கிய வேறுபாடுகளையும், ஒன்றை விட மற்றொன்றை எப்போது தேர்வு செய்வது என்பதையும் எடுத்துக்காட்ட, அவற்றை அருகருகே ஒப்பிடுவோம்.

அம்சம் useRef createRef
காம்போனென்ட் வகை ஃபங்ஷனல் காம்போனென்ட்கள் கிளாஸ் காம்போனென்ட்கள்
ஹூக் அல்லது முறை ஹூக் முறை
ரெஃப் நிகழ்வு ஒவ்வொரு ரெண்டரிலும் அதே ரெஃப் ஆப்ஜெக்டைத் திருப்பித் தருகிறது காம்போனென்ட்டின் ஒவ்வொரு நிகழ்விலும் ஒரு புதிய ரெஃப் ஆப்ஜெக்டை உருவாக்குகிறது
பயன்பாட்டு நிகழ்வுகள்
  • DOM கூறுகளை அணுகுதல்
  • மறு-ரெண்டர்களைத் தூண்டாமல் ரெண்டர்கள் முழுவதும் மதிப்புகளை நிலைநிறுத்துதல்
  • முந்தைய ப்ராப் மதிப்புகளைக் கண்காணித்தல்
  • மறு-ரெண்டர்களை ஏற்படுத்தாத மாற்றக்கூடிய மதிப்புகளை சேமித்தல்
  • DOM கூறுகளை அணுகுதல்
  • சைல்டு காம்போனென்ட் முறைகளை அணுகுதல்

சரியான ரெஃப்-ஐத் தேர்ந்தெடுப்பது: ஒரு முடிவு வழிகாட்டி

useRef மற்றும் createRef ஆகியவற்றுக்கு இடையே தேர்வு செய்ய உதவும் ஒரு எளிய வழிகாட்டி இதோ:

DOM கையாளுதலுக்கு அப்பால்: ரெஃப்ஸ்களுக்கான மேம்பட்ட பயன்பாட்டு நிகழ்வுகள்

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

1. சைல்டு காம்போனென்ட் முறைகளை அணுகுதல்

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


class ParentComponent extends React.Component {
  constructor(props) {
    super(props);
    this.childRef = React.createRef();
  }

  handleClick = () => {
    // Call a method on the child component
    this.childRef.current.doSomething();
  };

  render() {
    return (
      
); } } class ChildComponent extends React.Component { doSomething = () => { console.log('Child component action triggered!'); }; render() { return
This is a child component.
; } }

இந்த எடுத்துக்காட்டில், ParentComponent ஆனது ChildComponent-ஐ அணுகி அதன் doSomething முறையை அழைக்க ஒரு ரெஃப்-ஐப் பயன்படுத்துகிறது.

2. கவனம் மற்றும் தேர்வை நிர்வகித்தல்

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


import React, { useRef, useEffect } from 'react';

function FocusOnMount() {
  const inputRef = useRef(null);

  useEffect(() => {
    if (inputRef.current) {
      inputRef.current.focus();
      inputRef.current.select(); // Select the text in the input
    }
  }, []);

  return ;
}

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

3. கூறுகளை அனிமேட் செய்தல்

ரெஃப்ஸை அனிமேஷன் நூலகங்களுடன் (GreenSock அல்லது Framer Motion போன்றவை) இணைந்து DOM-ஐ நேரடியாகக் கையாளவும், சிக்கலான அனிமேஷன்களை உருவாக்கவும் பயன்படுத்தலாம். இது அனிமேஷன் வரிசைகள் மீது நுணுக்கமான கட்டுப்பாட்டை அனுமதிக்கிறது.

எளிமைக்காக வெண்ணிலா ஜாவாஸ்கிரிப்டைப் பயன்படுத்தும் எடுத்துக்காட்டு:


import React, { useRef, useEffect } from 'react';

function AnimatedBox() {
  const boxRef = useRef(null);

  useEffect(() => {
    const box = boxRef.current;
    if (box) {
      // Simple animation: move the box to the right
      box.animate(
        [
          { transform: 'translateX(0)' },
          { transform: 'translateX(100px)' },
        ],
        {
          duration: 1000, // 1 second
          iterations: Infinity, // Repeat forever
          direction: 'alternate',
        }
      );
    }
  }, []);

  return 
; }

இந்த எடுத்துக்காட்டு, ஒரு எளிய பெட்டியை அனிமேட் செய்ய, அதை கிடைமட்டமாக முன்னும் பின்னுமாக நகர்த்த Web Animations API-ஐப் பயன்படுத்துகிறது.

உலகளாவிய பயன்பாடுகளில் ரியாக்ட் ரெஃப்ஸைப் பயன்படுத்துவதற்கான சிறந்த நடைமுறைகள்

உலகளாவிய பார்வையாளர்களுக்காக ரியாக்ட் பயன்பாடுகளை உருவாக்கும்போது, ரெஃப்ஸ் சர்வதேசமயமாக்கல் (i18n) மற்றும் உள்ளூர்மயமாக்கல் (l10n) உடன் எவ்வாறு தொடர்பு கொள்கின்றன என்பதைக் கருத்தில் கொள்வது அவசியம். இங்கே சில சிறந்த நடைமுறைகள் உள்ளன:

1. அணுகல்தன்மை (A11y)

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


import React, { useRef, useEffect } from 'react';

function AccessibleFocus() {
  const buttonRef = useRef(null);

  useEffect(() => {
    const button = buttonRef.current;
    if (button) {
      // Only focus if the button is not already focused by the user
      if (document.activeElement !== button) {
        button.focus();
      }
    }
  }, []);

  return ;
}

2. சர்வதேசமயமாக்கப்பட்ட உள்ளீட்டுப் புலங்கள்

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

3. வலமிருந்து இடமாக (RTL) தளவமைப்புகள்

உங்கள் பயன்பாடு RTL மொழிகளை (எ.கா., அரபு, ஹீப்ரு) ஆதரித்தால், ரெஃப்ஸைப் பயன்படுத்தி உங்கள் DOM கையாளுதல்கள் தலைகீழான தளவமைப்பைக் கணக்கில் எடுத்துக்கொள்வதை உறுதிப்படுத்தவும். உதாரணமாக, கூறுகளை அனிமேட் செய்யும்போது, RTL மொழிகளுக்கு அனிமேஷன் திசையைத் திருப்புவதைக் கருத்தில் கொள்ளுங்கள்.

4. செயல்திறன் கருத்தாய்வுகள்

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

முடிவுரை

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

ரியாக்ட் தொடர்ந்து বিকசிப்பதால், இந்த அடிப்படைக் கருத்துகளில் தேர்ச்சி பெறுவது, புவியியல் மற்றும் கலாச்சார எல்லைகளைத் தாண்டிய புதுமையான மற்றும் பயனர்-நட்பு வலை அனுபவங்களை உருவாக்க உங்களுக்கு அதிகாரம் அளிக்கும். உண்மையான உலகளாவிய பயன்பாடுகளை வழங்க, அணுகல்தன்மை, சர்வதேசமயமாக்கல் மற்றும் செயல்திறனுக்கு முன்னுரிமை அளிக்க நினைவில் கொள்ளுங்கள்.