You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/reference/react/useId.md
+23-23Lines changed: 23 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,33 +32,33 @@ function PasswordField() {
32
32
33
33
[يرجى الإطلاع على المزيد من الأمثلة بالأسفل.](#usage)
34
34
35
-
#### المعاملات {/*parameters*/}
35
+
#### المعاملات (parameters) {/*parameters*/}
36
36
37
-
`useId` لا يستقبل أي معاملات.
37
+
`useId` لا يقبل أي معاملات.
38
38
39
39
#### العائدات {/*returns*/}
40
40
41
-
`useId` يعيد سلسلة بيانات فريدة مرتبطة باستدعاء `useId` المستخدم في هذا المكون تحديدا.
41
+
`useId` يعيد نص فريد مرتبط باستدعاء `useId` المستخدم في هذا المكون تحديدا.
42
42
43
43
#### تنبيهات {/*caveats*/}
44
44
45
-
* `useId` هو خطاف, لذلك يمكنك استدعائه فقط **في المستوي الأعلي من مكونك** أو من خلال الخطافات الخاصة بك. لا يمكنك استدعاء الخطاف داخل الحلقات والشروط. إذا كنت بحاجة إلي ذلك، قم بإستخراج مكون جديد وقم بنقل الحالة إليه.
45
+
* `useId` هو خطاف، لذلك يمكنك استدعائه فقط **في المستوي الأعلي من مكونك** أو من خلال الخطافات الخاصة بك. لا يمكنك استدعاء الخطاف داخل الحلقات والشروط. إذا كنت بحاجة إلي ذلك، قم بإستخراج مكون جديد وقم بنقل الحالة إليه.
46
46
47
47
* `useId` **لا ينبغي استخدامه لتوليد المفاتيح** في القائمة. [يجب أن تتم إنشاء المفاتيح من البيانات الخاصة بك.](/learn/rendering-lists#where-to-get-your-key)
48
48
49
49
---
50
50
51
-
## الإستخدام {/*usage*/}
51
+
## الاستخدام {/*usage*/}
52
52
53
53
<Pitfall>
54
54
55
-
**لا تستدعي`useId` لتوليد المفاتيح في القائمة.** [يجب أن تتم إنشاء المفاتيح من البيانات الخاصة بك.](/learn/rendering-lists#where-to-get-your-key)
55
+
**لا تستدعِ`useId` لتوليد المفاتيح في القائمة.** [يجب أن تتم إنشاء المفاتيح من البيانات الخاصة بك.](/learn/rendering-lists#where-to-get-your-key)
56
56
57
57
</Pitfall>
58
58
59
59
### إنشاء معرفات فريدة لسمات إمكانية الوصول {/*generating-unique-ids-for-accessibility-attributes*/}
60
60
61
-
استدعي`useId` في المستوي الأعلي من المكون الخاص بك لإنشاء معرف فريد:
61
+
استدعِ`useId` في المستوي الأعلي من المكون الخاص بك لإنشاء معرف فريد:
62
62
63
63
```js [[1, 4, "passwordHintId"]]
64
64
import { useId } from'react';
@@ -81,7 +81,7 @@ function PasswordField() {
81
81
82
82
[HTML accessibility attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) مثل [`aria-describedby`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby) تتيح لك تحديد أن هناك علامتين مرتبطين ببعضهما البعض. على سبيل المثال، يمكنك تحديد أن العنصر (مثل صندوق الإدخال) يتم وصفه بواسطة عنصر آخر (مثل فقرة).
83
83
84
-
في HTML ستكتبه بهذا الشكل:
84
+
في HTML العادي ستكتبه بهذا الشكل:
85
85
86
86
```html {5,8}
87
87
<label>
@@ -92,11 +92,11 @@ function PasswordField() {
92
92
/>
93
93
</label>
94
94
<p id="password-hint">
95
-
The password should contain at least18characters
95
+
يجب أن تحتوي كلمة السر على18حرفًا على الأقل
96
96
</p>
97
97
```
98
98
99
-
مع ذلك، تضمين المعرفات بهذا الشكل ليس طريقة جيدة في ريأكت. يمكن أن يتم عرض المكون أكثر من مرة على الصفحة ولكن يجب أن تكون المعرفات فريدة! بدلا من تضمين معرف ثابت، يمكنك توليد معرف فريد باستخدام `useId`:
99
+
مع ذلك، تضمين المعرفات بهذا الشكل ليس طريقة جيدة في React. يمكن أن يتم عرض المكون أكثر من مرة على الصفحة، ولكن يجب أن تكون المعرفات فريدة! بدلا من تضمين معرف ثابت، يمكنك توليد معرف فريد باستخدام `useId`:
100
100
101
101
```js {4,11,14}
102
102
import { useId } from'react';
@@ -113,7 +113,7 @@ function PasswordField() {
113
113
/>
114
114
</label>
115
115
<p id={passwordHintId}>
116
-
The password should contain at least18characters
116
+
يجب أن تحتوي كلمة السر على18حرفًا على الأقل
117
117
</p>
118
118
</>
119
119
);
@@ -139,7 +139,7 @@ function PasswordField() {
139
139
/>
140
140
</label>
141
141
<p id={passwordHintId}>
142
-
The password should contain at least18characters
142
+
يجب أن تحتوي كلمة السر على18حرفًا على الأقل
143
143
</p>
144
144
</>
145
145
);
@@ -148,9 +148,9 @@ function PasswordField() {
148
148
exportdefaultfunctionApp() {
149
149
return (
150
150
<>
151
-
<h2>Choose password</h2>
151
+
<h2>أدخل كلمة سر</h2>
152
152
<PasswordField />
153
-
<h2>Confirm password</h2>
153
+
<h2>تأكيد كلمة السر</h2>
154
154
<PasswordField />
155
155
</>
156
156
);
@@ -167,7 +167,7 @@ input { margin: 5px; }
167
167
168
168
<Pitfall>
169
169
170
-
في [عرض الخادم](/reference/react-dom/server), **`useId` يتطلب وجود نفس شجرة المكونات علي الخادم والعميل**. إذا لم تتطابق الشجرات التي تقوم بعرضها على الخادم والعميل حرفيا، فإن المعرفات المولدة لن تتطابق.
170
+
في [تصيير الخادم](/reference/react-dom/server), **يتطلب `useId` وجود نفس شجرة المكونات علي الخادم والعميل**. إذا لم تتطابق الشجرات التي تقوم بعرضها على الخادم والعميل حرفيا، فإن المعرفات المولدة لن تتطابق.
171
171
172
172
</Pitfall>
173
173
@@ -177,11 +177,11 @@ input { margin: 5px; }
177
177
178
178
قد تتساءل لماذا `useId` أفضل من زيادة متغير عالمي مثل `nextId++`.
179
179
180
-
الفائدة الأساسية لـ `useId` هي أن ريأكت ستضمن أنه يعمل مع [server rendering.](/reference/react-dom/server) أثناء عرض الخادم, يتم تحويل مكوناتك إلي عناصر HTML. في وقت لاحق، على العميل, [hydration](/reference/react-dom/client/hydrateRoot) يقوم بربط معالجات الأحداث الخاصة بك بعناصر HTML التي تم توليدها. لكي يعمل تحويل العناصر على العميل بشكل صحيح، يجب أن يتطابق إخراج العميل مع HTML الذي علي الخادم.
180
+
الفائدة الأساسية لـ `useId` هي أن React ستضمن أنه يعمل مع [تصيير الخادم.](/reference/react-dom/server) أثناء تصيير الخادم، يتم تحويل مكوناتك إلي عناصر HTML. في وقت لاحق، على العميل، [hydration](/reference/react-dom/client/hydrateRoot) يقوم بربط معالجات الأحداث الخاصة بك بعناصر HTML التي تم توليدها. لكي يعمل تحويل العناصر على العميل بشكل صحيح، يجب أن يتطابق إخراج العميل مع HTML الذي على الخادم.
181
181
182
182
من الصعب جدا ضمان ذلك باستخدام عداد متزايد لأن ترتيب تحويل المكونات على العميل قد لا يتطابق مع ترتيب إخراج HTML على الخادم. من خلال استدعاء `useId`، ستضمن أن عملية تحويل المكونات ستعمل بشكل صحيح، وسيتطابق الإخراج بين الخادم والعميل.
183
183
184
-
داخل ريأكت، يتم إنشاء `useId` من الـ "parent path" للمكون الذي يستدعيه. وهذا هو السبب في أنه إذا كانت شجرة العميل وشجرة الخادم متطابقتين، سيتطابق الـ "parent path" بغض النظر عن ترتيب العرض.
184
+
داخل React، يتم إنشاء `useId` من الـ "مسار الأب" للمكون الذي يستدعيه. وهذا هو السبب في أنه إذا كانت شجرة العميل وشجرة الخادم متطابقتين، سيتطابق "مسار لأب" بغض النظر عن ترتيب العرض.
185
185
186
186
</DeepDive>
187
187
@@ -200,10 +200,10 @@ export default function Form() {
0 commit comments