మీకు React Key Prop ఎందుకు అవసరం

మీ కన్సోల్‌లో ఈ హెచ్చరిక కనిపిస్తుంది: "Each child in a list should have a unique 'key' prop."

చాలా మంది డెవలపర్లు దీనిని విస్మరిస్తారు. ఇది ఒక తప్పు. key prop అనేది కేవలం ఒక హెచ్చరిక మాత్రమే కాదు. ఇది పెర్ఫార్మెన్స్ (performance) మెరుగుపరచడానికి మరియు బగ్స్ (bugs) రాకుండా నివారించడానికి ఉపయోగపడే ఒక సాధనం.

key prop ఏం చేస్తుంది?

లిస్ట్ ఐటమ్స్‌ను గుర్తించడానికి React 'key'ని ఉపయోగిస్తుంది. ఏ ఐటమ్ మారింది, ఏది కదిలింది లేదా ఏది తొలగించబడింది అనేది ఇది Reactకి తెలియజేస్తుంది.

key లేకపోతే, React మొత్తం లిస్ట్‌ను మళ్ళీ re-render చేయాల్సి ఉంటుంది. దీనివల్ల మీ యాప్ నెమ్మదిస్తుంది మరియు డేటా బగ్స్ వచ్చే అవకాశం ఉంది.

లైబ్రరీ ఉదాహరణ

1,000 పుస్తకాలు ఉన్న ఒక లైబ్రరీని ఊహించుకోండి. మీరు మధ్యలో ఒక కొత్త పుస్తకాన్ని చేర్చాలనుకుంటే, దానికి చోటు చేయడానికి మిగిలిన ప్రతి పుస్తకాన్ని పక్కకు జరపాల్సి ఉంటుంది.

Reactలో, key ఒక ప్రత్యేకమైన IDలా పనిచేస్తుంది. ఇది ప్రతి ఎలిమెంట్‌కు ఒక గుర్తింపును ఇస్తుంది. reconciliation ప్రక్రియలో, React కొత్త లిస్ట్‌ను పాత లిస్ట్‌తో పోల్చి చూస్తుంది.

Keys లేకపోతే వచ్చే సమస్యలు

మీరు keyని వదిలేస్తే, ప్రతి ఐటమ్ ఒకేలా ఉందని React భావిస్తుంది. మీరు మొదట్లో ఒక ఐటమ్‌ను జోడిస్తే, మొత్తం లిస్ట్ మారిపోయిందని React అనుకుంటుంది. ఇది DOMలో ప్రతి ఎలిమెంట్‌ను మళ్ళీ సృష్టిస్తుంది. దీనివల్ల మెమరీ (memory) మరియు CPU వృథా అవుతాయి.

The Index Trap

కొత్త డెవలపర్లు తరచుగా array indexని keyగా ఉపయోగిస్తారు. ఉదాహరణ: key={index}

డైనమిక్ లిస్ట్‌ల విషయంలో ఇది ప్రమాదకరం. మీరు ఐటమ్స్‌ను sort, filter లేదా delete చేస్తే, ఇండెక్స్ మారిపోతుంది. దీనివల్ల తప్పుగా UI states మరియు బగ్స్ ఏర్పడతాయి.

Keys కోసం ఉత్తమ పద్ధతులు (Best Practices)

  • మీ డేటాబేస్ నుండి స్థిరమైన (stable) IDsని ఉపయోగించండి (ఉదాహరణకు user.id).
  • ఒకే స్థాయిలోని ఎలిమెంట్స్ (siblings) మధ్య keys ప్రత్యేకంగా ఉండేలా చూసుకోండి.
  • keyగా Math.random()ని ఉపయోగించకండి. ఇది ప్రతి render సమయంలో మారుతూ ఉంటుంది మరియు UI flickering కి కారణమవుతుంది.
  • మీ డేటాలో ID లేకపోతే, డేటాను fetch చేసేటప్పుడు uuid లేదా nanoid ఉపయోగించి ఒక IDని సృష్టించండి.

Key Selection Guide

Database ID: ఉత్తమమైనది. చాలా స్థిరంగా మరియు వేగంగా ఉంటుంది. • Array Index: ఎప్పుడూ మారని static లిస్ట్‌ల కోసం మాత్రమే ఉపయోగించండి. • Math.random(): నివారించండి. ఇది అనవసరమైన re-mounts కి దారితీస్తుంది.

సారాంశం (Summary)

మంచి key మీ యాప్‌ను వేగంగా చేస్తుంది. ఇది అనవసరమైన re-rendersను 40% వరకు తగ్గించగలదు. ఎల్లప్పుడూ స్థిరమైన మరియు ప్రత్యేకమైన identifiersలను ప్రాధాన్యత ఇవ్వండి.

Source: https://dev.to/banti_kevat_8e2d123bb7994/react-me-key-prop-kyun-zaroori-hai-warning-solve-in-hindi-49dk