Skip to content

Commit 3d64869

Browse files
authored
Update manipulating-the-dom-with-refs.md
fixed some issue in translations removed extra changes
1 parent ce601f4 commit 3d64869

File tree

1 file changed

+23
-47
lines changed

1 file changed

+23
-47
lines changed

src/content/learn/manipulating-the-dom-with-refs.md

Lines changed: 23 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,9 @@ li {
193193

194194
<DeepDive>
195195

196-
#### लिस्ट के रेफ्स को मैनेज करने के लिए रेफ कॉलबैक का उपयोग करना {/*how-to-manage-a-list-of-refs-using-a-ref-callback*/}
196+
#### लिस्ट ऑफ़ रिफ्स को `ref` कॉलबैक का उपयोग करके प्रबंधित करना {/*how-to-manage-a-list-of-refs-using-a-ref-callback*/}
197197

198-
उपरोक्त उदाहरणों में, रेफ्स की संख्या पहले से तय है। हालांकि, कभी-कभी आपको लिस्ट के प्रत्येक आइटम के लिए एक रेफ चाहिए, और आपको नहीं पता होता कि कितने आइटम होंगे। इस प्रकार का कोड **काम नहीं करेगा**:
198+
उपरोक्त उदाहरणों में, रिफ्स की संख्या पहले से तय होती है। लेकिन कभी-कभी आपको लिस्ट में प्रत्येक आइटम के लिए एक रिफ की ज़रूरत हो सकती है, और आपको पता नहीं होता कि कितने आइटम होंगे। ऐसा कुछ **काम नहीं करेगा**:
199199

200200
```js
201201
<ul>
@@ -207,13 +207,13 @@ li {
207207
</ul>
208208
```
209209

210-
यह इसलिए है क्योंकि **Hooks को केवल आपके कंपोनेंट के टॉप-लेवल पर ही कॉल किया जाना चाहिए।** आप `useRef` को किसी लूप, कंडीशन या `map()` कॉल के अंदर कॉल नहीं कर सकते।
210+
ऐसा इसलिए है क्योंकि **हुक्स को केवल आपके कंपोनेंट के शीर्ष स्तर पर ही कॉल किया जाना चाहिए।** आप `useRef` को किसी लूप, कंडीशन, या `map()` कॉल के अंदर नहीं कॉल कर सकते।
211211

212-
इसका एक तरीका यह है कि उनके पैरेंट एलिमेंट का एक रेफ प्राप्त करें, और फिर DOM मैनिपुलेशन मेथड्स जैसे [`querySelectorAll`](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll) का उपयोग करके व्यक्तिगत चाइल्ड नोड्स "ढूंढें।" हालांकि, यह तरीका अस्थिर हो सकता है और यदि आपका DOM स्ट्रक्चर बदलता है तो टूट सकता है।
212+
इस समस्या को हल करने का एक तरीका यह है कि उनके पैरेंट एलिमेंट के लिए एक रिफ लें और फिर DOM मैनिपुलेशन विधियों जैसे [`querySelectorAll`](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll) का उपयोग करके व्यक्तिगत चाइल्ड नोड्स "खोजें"। लेकिन यह तरीका नाजुक है और आपके DOM स्ट्रक्चर के बदलने पर टूट सकता है।
213213

214-
दूसरा समाधान यह है कि **`ref` एट्रिब्यूट को एक फंक्शन पास करें।** इसे [`ref` callback](/reference/react-dom/components/common#ref-callback) कहा जाता है। React आपके रेफ कॉलबैक को DOM नोड के साथ कॉल करेगा जब रेफ सेट करने का समय होगा, और `null` के साथ जब इसे क्लियर करने का समय होगा। इससे आप अपनी खुद की एक Array या [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) बनाए रख सकते हैं और किसी भी रेफ तक उसके इंडेक्स या किसी प्रकार की ID द्वारा पहुंच सकते हैं
214+
एक और समाधान है कि **`ref` एट्रिब्यूट को एक फ़ंक्शन पास करें।** इसे [`ref` कॉलबैक](/reference/react-dom/components/common#ref-callback) कहा जाता है। React आपके रिफ कॉलबैक को DOM नोड के साथ तब कॉल करेगा जब रिफ सेट करना हो, और `null` के साथ जब रिफ को क्लियर करना हो। यह आपको अपनी खुद की [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) या ऐरे बनाए रखने देता है और किसी रिफ तक इसकी इंडेक्स या किसी प्रकार के ID के माध्यम से पहुंचने देता है
215215

216-
इस उदाहरण में दिखाया गया है कि आप इस दृष्टिकोण का उपयोग करके लंबी लिस्ट में किसी भी नोड तक स्क्रॉल कैसे कर सकते हैं:
216+
यह उदाहरण दिखाता है कि आप इस तरीके का उपयोग करके किसी लंबी लिस्ट में किसी भी नोड को स्क्रॉल कैसे कर सकते हैं:
217217

218218
<Sandpack>
219219

@@ -236,7 +236,7 @@ export default function CatFriends() {
236236

237237
function getMap() {
238238
if (!itemsRef.current) {
239-
// Initialize the Map on first usage.
239+
// पहली बार उपयोग पर Map को इनिशियलाइज़ करें।
240240
itemsRef.current = new Map();
241241
}
242242
return itemsRef.current;
@@ -256,11 +256,11 @@ export default function CatFriends() {
256256
key={cat}
257257
ref={(node) => {
258258
const map = getMap();
259-
if (node) {
260-
map.set(cat, node);
261-
} else {
259+
map.set(cat, node);
260+
261+
return () => {
262262
map.delete(cat);
263-
}
263+
};
264264
}}
265265
>
266266
<img src={cat} />
@@ -309,59 +309,35 @@ li {
309309
}
310310
```
311311

312-
```json package.json hidden
313-
{
314-
"dependencies": {
315-
"react": "canary",
316-
"react-dom": "canary",
317-
"react-scripts": "^5.0.0"
318-
}
319-
}
320-
```
321-
322312
</Sandpack>
323313

324-
इस उदाहरण में, itemsRef एक सिंगल DOM नोड को स्टोर नहीं करता है। इसके बजाय, यह एक Map को स्टोर करता है, जो हर आइटम के ID को उसके संबंधित DOM नोड से जोड़ता है। (Refs किसी भी मान को स्टोर कर सकते हैं!) हर लिस्ट आइटम पर उपयोग किए गए ref callback का काम Map को अपडेट करना है:
314+
इस उदाहरण में, `itemsRef` एक ही DOM नोड को नहीं रखता है। इसके बजाय, यह एक [Map](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map) रखता है, जो आइटम ID से DOM नोड को मैप करता है। ([Refs किसी भी वैल्यू को रख सकते हैं!](/learn/referencing-values-with-refs)) प्रत्येक लिस्ट आइटम पर [`ref` कॉलबैक](/reference/react-dom/components/common#ref-callback) Map को अपडेट करने का ध्यान रखता है:
325315

326316
```js
327317
<li
328318
key={cat.id}
329319
ref={node => {
330320
const map = getMap();
331-
if (node) {
332-
// Add to the Map
333-
map.set(cat, node);
334-
} else {
335-
// Remove from the Map
336-
map.delete(cat);
337-
}
338-
}}
339-
>
340-
```
341-
342-
यह आपको बाद में Map से व्यक्तिगत DOM नोड्स को पढ़ने की अनुमति देता है।
343-
344-
<Canary>
345-
346-
यह उदाहरण `ref` कॉलबैक के साथ एक क्लीनअप फ़ंक्शन का उपयोग करके Map को प्रबंधित करने का एक और तरीका दिखाता है।
347-
348-
```js
349-
<li
350-
key={cat.id}
351-
ref={node => {
352-
const map = getMap();
353-
// Add to the Map
321+
// Map में जोड़ें
354322
map.set(cat, node);
355323

356324
return () => {
357-
// Remove from the Map
325+
// Map से हटाएं
358326
map.delete(cat);
359327
};
360328
}}
361329
>
362330
```
363331

364-
</Canary>
332+
यह आपको बाद में Map से व्यक्तिगत DOM नोड्स पढ़ने की अनुमति देता है।
333+
334+
<Note>
335+
336+
जब Strict Mode सक्षम होता है, तो डेवेलपमेंट में रिफ कॉलबैक दो बार चलेंगे।
337+
338+
`[Ref]` कॉलबैक को फिर से चलाने से बग कैसे ठीक होते हैं, इसके बारे में अधिक जानें। [यहां पढ़ें](/reference/react/StrictMode#fixing-bugs-found-by-re-running-ref-callbacks-in-development)
339+
340+
</Note>
365341

366342
</DeepDive>
367343

0 commit comments

Comments
 (0)