React Refs மற்றும் useRef Hook-ஐப் பயன்படுத்துதல்

React ஒரு declarative approach அணுகுமுறையைப் பயன்படுத்துகிறது. நீங்கள் state-ஐப் புதுப்பித்தால், React UI-ஐப் புதுப்பிக்கும். இது பெரும்பாலான பணிகளுக்குச் சரியாக இருக்கும்.

ஆனால் சில நேரங்களில் நீங்கள் Virtual DOM-க்கு வெளியே செல்ல வேண்டியிருக்கும். ஒரு உண்மையான HTML உறுப்பை (element) நேரடியாகத் தொட வேண்டியிருக்கலாம். இங்குதான் Refs மற்றும் useRef hook பயன்படுகின்றன.

Ref என்றால் என்ன?

Ref என்பது ஒரு pointer ஆகும். இது React-ஐ நேரடியாக ஒரு native DOM node-உடன் இணைக்கிறது.

useState-க்கு பதிலாக ஏன் useRef-ஐப் பயன்படுத்த வேண்டும்?

State புதுப்பிப்புகள் ஒரு re-render-ஐத் தூண்டும். அதாவது, React திரையில் உள்ள component-ஐ மீண்டும் வரையும். Ref புதுப்பிப்புகள் re-render-ஐத் தூண்டாது. இதனால், மதிப்புகள் மாறினாலும் அவை உடனடியாக UI-இல் தெரிய வேண்டிய அவசியம் இல்லாத சூழலுக்கு இவை மிகவும் பொருத்தமானவை.

பொதுவான பயன்பாட்டு முறைகள்:

• ஒரு input field-ஐத் தானாகவே focus செய்தல். • வீடியோ அல்லது ஆடியோ உறுப்புகளைக் கட்டுப்படுத்துதல் (play/pause). • ஒரு உறுப்பின் அகலம் அல்லது உயரத்தை அளவிடுதல். • intervals அல்லது timeouts-க்கான timer IDs-களைச் சேமித்தல்.

useRef-ஐப் பயன்படுத்துவது எப்படி:

  1. React-லிருந்து useRef-ஐ import செய்யவும்.
  2. அதைத் தொடங்குதல் (Initialize): const myRef = useRef(null).
  3. அதை ஒரு உறுப்புடன் இணைத்தல்: <input ref={myRef} />.
  4. அதன் மதிப்பை அணுகுதல்: myRef.current.

உதாரணம் 1: ஒரு input-ஐத் தானாகவே focus செய்தல்

ஒரு பயனர் ஒரு பக்கத்திற்குள் நுழையும்போது, கர்சர் (cursor) உரையாடல் பெட்டியில் (text box) இருக்க வேண்டும் என்று நீங்கள் விரும்பினால், component mount ஆன பிறகு myRef.current.focus() என்பதை அழைக்க useEffect-ஐப் பயன்படுத்தலாம்.

உதாரணம் 2: ஒரு ஸ்டாப்வாட்ச் (Stopwatch)

நீங்கள் ஒரு setInterval ID-ஐ state-இல் சேமித்தால், timer ஒவ்வொரு முறை இயங்கும்போதும் component re-render ஆகும். இது மெதுவாக இருக்கும். ஆனால், அந்த ID-ஐ ஒரு ref-இல் சேமித்தால், component வேகமாகச் செயல்படும். மதிப்புகள் re-renders-களுக்கு இடையிலும் பாதுகாப்பாக இருக்கும், மேலும் உலாவியில் (browser) கூடுதல் வேலையைச் செய்யத் தேவையில்லை.

State vs Ref:

• State: re-render-ஐத் தூண்டும். UI தரவுகளுக்குப் பயன்படுத்தப்படுகிறது. புதுப்பிப்புகள் asynchronous முறையில் நடக்கும். • Ref: re-render ஆகாது. DOM அணுகல் மற்றும் நினைவகத்திற்கு (memory) பயன்படுத்தப்படுகிறது. புதுப்பிப்புகள் synchronous முறையில் நடக்கும்.

அனுபவம் வாய்ந்தவர்களுக்கான (Seniors) சில குறிப்புகள்:

• அதிகமாகப் பயன்படுத்துவதைத் தவிர்க்கவும். அறிவிப்பு முறை (declarative logic) தோல்வியடையும் போது மட்டும் refs-ஐப் பயன்படுத்தவும். • நினைவகத்தைச் சுத்தப்படுத்துங்கள் (Clean up memory). உங்கள் cleanup function-இல் எப்போதும் intervals அல்லது event listeners-களை நீக்கவும். • rendering-ன் போது refs-இல் எழுத வேண்டாம். useEffect அல்லது event handlers-க்குள் மட்டும் ref.current-ஐப் புதுப்பிக்கவும். இது side effects-களைத் தவிர்க்கும். • forwardRef-ஐப் பயன்படுத்தவும். ஒரு custom child component-க்கு ref-ஐ அனுப்ப விரும்பினால், அந்த child component-ஐ React.forwardRef-இல் சுற்ற வேண்டும்.

Source: https://dev.to/banti_kevat_8e2d123bb7994/react-me-refs-aur-useref-hook-kaise-use-karein-2dde