Skip to content

Commit 358c4ca

Browse files
committed
revert use client page
1 parent 87aad10 commit 358c4ca

File tree

1 file changed

+9
-52
lines changed

1 file changed

+9
-52
lines changed

src/content/reference/react/use-client.md

Lines changed: 9 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,25 @@ canary: true
55
---
66

77
<Canary>
8-
هذه التوجيهات لازمة فقط إذا كنت [تستخدم RSC (مكونات الخادم)](/learn/start-a-new-react-project#bleeding-edge-react-frameworks) أو تبني مكتبة متوافقة معها.
98

9+
`'use client'` is needed only if you're [using React Server Components](/learn/start-a-new-react-project#bleeding-edge-react-frameworks) or building a library compatible with them.
1010
</Canary>
1111

1212

1313
<Intro>
1414

15-
<<<<<<< HEAD
16-
`'use client'` تميز الملفات ليتم تنفيذ مكوناتها في جانب العميل
17-
=======
1815
`'use client'` lets you mark what code runs on the client.
19-
>>>>>>> fcd00068bd1bdd4eb37e3e0ab0488a9d093670bc
2016

2117
</Intro>
2218

2319
<InlineToc />
2420

2521
---
2622

27-
## المرجع {/*reference*/}
23+
## Reference {/*reference*/}
2824

2925
### `'use client'` {/*use-client*/}
3026

31-
<<<<<<< HEAD
32-
أضف `'use client'` في أعلى ملف لتمييزه (الملف أو أي مكونات فرعية يحتويها) بأنه يتم تنفيذه عند العميل، بغض النظر عن المكان الذي يتم استيراده منه.
33-
=======
3427
Add `'use client'` at the top of a file to mark the module and its transitive dependencies as client code.
3528

3629
```js {1}
@@ -71,7 +64,7 @@ To better illustrate this, consider the following React Server Components app.
7164

7265
<Sandpack>
7366

74-
```js App.js
67+
```js src/App.js
7568
import FancyText from './FancyText';
7669
import InspirationGenerator from './InspirationGenerator';
7770
import Copyright from './Copyright';
@@ -89,15 +82,15 @@ export default function App() {
8982

9083
```
9184

92-
```js FancyText.js
85+
```js src/FancyText.js
9386
export default function FancyText({title, text}) {
9487
return title
9588
? <h1 className='fancy title'>{text}</h1>
9689
: <h3 className='fancy cursive'>{text}</h3>
9790
}
9891
```
9992

100-
```js InspirationGenerator.js
93+
```js src/InspirationGenerator.js
10194
'use client';
10295

10396
import { useState } from 'react';
@@ -120,13 +113,13 @@ export default function InspirationGenerator({children}) {
120113
}
121114
```
122115

123-
```js Copyright.js
116+
```js src/Copyright.js
124117
export default function Copyright({year}) {
125118
return <p className='small'>©️ {year}</p>;
126119
}
127120
```
128121

129-
```js inspirations.js
122+
```js src/inspirations.js
130123
export default [
131124
"Don’t let yesterday take up too much of today.” — Will Rogers",
132125
"Ambition is putting a ladder against the sky.",
@@ -181,7 +174,6 @@ By the above definitions, the component `FancyText` is both a Server and Client
181174
First, let's clarify that the term "component" is not very precise. Here are just two ways "component" can be understood:
182175

183176
1. A "component" can refer to a **component definition**. In most cases this will be a function.
184-
>>>>>>> fcd00068bd1bdd4eb37e3e0ab0488a9d093670bc
185177

186178
```js
187179
// This is a definition of a component
@@ -294,7 +286,7 @@ Notably, these are not supported:
294286

295287
<Sandpack>
296288

297-
```js App.js
289+
```js src/App.js
298290
'use client';
299291

300292
import { useState } from 'react';
@@ -313,40 +305,6 @@ export default function Counter({initialValue = 0}) {
313305
}
314306
```
315307

316-
<<<<<<< HEAD
317-
عند استيراد ملف معلّم بعبارة `'use client'` من مكوّن في الخادم، ستعامل المجمّعات المتوافقة [bundlers](/learn/start-a-new-react-project#bleeding-edge-reace-frameworks) الاستيراد كـ"نقطة الفصل" بين كود الخادم وكود العميل. يمكن للمكونات الموجودة في هذه النقطة أو أسفلها في الرسم البياني للوحدة الأساسية استخدام الميزات React المخصصة للعميل مثل [`useState`](/reference/react/useState).
318-
319-
#### ملاحظات {/*caveats*/}
320-
321-
* ليس من الضرورة إضافة `'use client'` إلى كل ملف يستخدم ميزات React المخصصة للعميل، بل فقط في الملفات التي يتم استيرادها من ملفات عناصر الخادم. `'use client'` تُشير إلى الحدود بين الكود المخصص للخادم والعميل؛ أي مكونات تكون أسفل هذه الحدود في شجرة العناصر ستُنفَذ تلقائيًا على العميل. لكي يتم تقديمها من عناصر الخادم، يجب أن تحتوي المكونات المصدرة من ملفات `'use client'` على خصائص يمكن تسلسلها.
322-
323-
* عند استيراد ملف `'use client'` من ملف خادم، يمكن تقديم القيم المستوردة كمكون React أو تمريرها عبر الـ props إلى مكون عميل. وأي استخدام آخر سيثير خطأ.
324-
325-
* عند استيراد ملف 'use client' من ملف عميل آخر، فإن التوجيه لا يؤثر. هذا يسمح لك بكتابة مكونات خاصة بالعميل يمكن استخدامها في نفس الوقت من عناصر الخادم والعميل.
326-
327-
* ستصبح جميع الأكواد في ملف `'use client'` وأي وحدات يتم استيرادها (مباشرة أو غير مباشرة) جزءًا من شبكة الوحدات الأساسية للعميل ويجب إرسالها وتنفيذها من قِبل العميل ليتم تقديمها من قبل المستعرض. لتقليل حجم حزمة العميل والاستفادة الكاملة من الخادم، قم بنقل الحالة (والتوجيهات `'use client'`) للأسفل في شجرة العناصر عند الحاجة، وقم بتمرير عناصر الخادم المقدمة [كأطفال (children)](/learn/passing-props-to-a-component#passing-jsx-as-children) إلى عناصر العميل.
328-
329-
* نظرًا لأن الخصائص يتم تسلسلها عبر الحدود بين الخادم والعميل، يجب مراعاة أن موقع هذه التوجيهات يمكن أن يؤثر على كمية البيانات المرسلة إلى العميل؛ يُنصح بتجنب هياكل البيانات التي تكون أكبر من اللازم.
330-
331-
* عادةً، يجب ألا يتم وضع `'use client'` على المكونات مثل `<MarkdownRenderer>` التي لا تستخدم ميزات خاصة بالخادم أو العميل. بهذه الطريقة، يمكنها التقديم حصريًا على الخادم عند استخدامها من عنصر خادم، ولكن ستُضاف إلى حزمة العميل عند استخدامها من عنصر عميل.
332-
333-
* يجب أن تشمل المكتبات التي يتم نشرها على npm `'use client'` على المكونات المصدرة من React التي يمكن تقديمها باستخدام خصائص يمكن تسلسلها وتستخدم ميزات React المخصصة للعميل، للسماح بالاستيراد والتقديم من قِبل عناصر الخادم. وإلا، سيحتاج المستخدمون إلى لف مكونات المكتبة في أكوادهم الخاصة بـ `'use client'` وهذا قد يكون مرهقًا ويمنع المكتبة من نقل الخطط إلى الخادم لاحقًا. عند نشر الملفات المجمَّعة مُسبقًا على npm، تأكد من أن المكونات المصدرة مبدوءة بـ `'use client'`، منفصلة عن أي ملف يحتوي على تصديرات يمكن استخدامها مباشرة على الخادم.
334-
335-
* ستستمر مكونات العميل في العمل كجزء من عملية تقديم جانب الخادم (SSR) أو إنشاء الموقع الثابت في وقت التجميع (SSG)، حيث يعملون كعملاء لتحويل الإخراج الأولي لمكونات React إلى HTML يمكن تقديمه قبل تنزيل حزم JavaScript. ولكنها لا يمكنها استخدام ميزات خاصة بالخادم مثل القراءة مباشرةً من قاعدة بيانات.
336-
337-
* يجب أن تكون التوجيهات مثل `'use client'` في بداية الملف، قبل أي استيرادات أو أكواد أخرى (يمكن وضع تعليقات فوق التوجيهات). يجب كتابة التوجيهات باستخدام علامات اقتباس فردية أو مزدوجة، وليس علامات backtick. (تنسيق التوجيه `'use xyz'` يشبه إلى حد ما تنسيق اسماء الـ Hooks مثل `useXyz()`، ولكن هذا التشابه مجرد صدفة.)
338-
339-
## الاستخدام {/*usage*/}
340-
341-
<Wip>
342-
هذا القسم لم يكتمل بعد.
343-
344-
يمكن استخدام هذا النهج في أي إطار عمل يدعم مكونات الخادم. يمكنك العثور على مظيد من المعلومات منهم:
345-
346-
* [وثائق Next.js](https://nextjs.org/docs/getting-started/react-essentials)
347-
* المزيد يأتي لاحقا...
348-
</Wip>
349-
=======
350308
</Sandpack>
351309

352310
As `Counter` requires both the `useState` Hook and event handlers to increment or decrement the value, this component must be a Client Component and will require a `'use client'` directive at the top.
@@ -418,5 +376,4 @@ These libraries may rely on component Hooks or client APIs. Third-party componen
418376

419377
If these libraries have been updated to be compatible with React Server Components, then they will already include `'use client'` markers of their own, allowing you to use them directly from your Server Components. If a library hasn't been updated, or if a component needs props like event handlers that can only be specified on the client, you may need to add your own Client Component file in between the third-party Client Component and your Server Component where you'd like to use it.
420378

421-
[TODO]: <> (Troubleshooting - need use-cases)
422-
>>>>>>> fcd00068bd1bdd4eb37e3e0ab0488a9d093670bc
379+
[TODO]: <> (Troubleshooting - need use-cases)

0 commit comments

Comments
 (0)