Skip to content

Commit c1ef207

Browse files
committed
update root component
1 parent be494f6 commit c1ef207

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

src/content/reference/react-dom/client/hydrateRoot.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,3 +271,55 @@ export default function App() {
271271
272272
---
273273
274+
### التعامل مع محتوى مختلف بين العميل والخادم {/*handling-different-client-and-server-content*/}
275+
276+
إذا كنت بحاجة إلى طرح شيء مختلف عند الخادم والعميل بصورة مقصودة، فيمكنك عمل رسم مرحلتين. يمكن للمكوِّنات التي تقوم بعرض شيء مختلف عند العميل أن تقرأ متغير [الحالة](/reference/react/useState) مثل `isClient` ، الذي يمكنك تعيينه على `true` في [التأثير](/reference/react/useEffect):
277+
278+
<Sandpack>
279+
280+
```html public/index.html
281+
<!--
282+
HTML content inside <div id="root">...</div>
283+
was generated from App by react-dom/server.
284+
-->
285+
<div id="root"><h1>Is Server</h1></div>
286+
```
287+
288+
```js index.js
289+
import './styles.css';
290+
import { hydrateRoot } from 'react-dom/client';
291+
import App from './App.js';
292+
293+
hydrateRoot(document.getElementById('root'), <App />);
294+
```
295+
296+
```js App.js active
297+
import { useState, useEffect } from "react";
298+
299+
export default function App() {
300+
const [isClient, setIsClient] = useState(false);
301+
302+
useEffect(() => {
303+
setIsClient(true);
304+
}, []);
305+
306+
return (
307+
<h1>
308+
{isClient ? 'Is Client' : 'Is Server'}
309+
</h1>
310+
);
311+
}
312+
```
313+
314+
</Sandpack>
315+
316+
بهذه الطريقة، ستقوم عملية الإعادة الأولية بتقديم نفس المحتوى الذي تم تجهيزه على الخادم، مما يمنع حدوث عدم التطابق، لكن سيحدث عبور إضافي بشكل متزامن مباشرة بعد الترطيب.
317+
318+
<Pitfall>
319+
320+
هذا النهج يجعل عملية الترطيب أبطأ نظرًا لاضطرار مكوناتك إلى عرض نفسها مرتين. كن حذرًا من تجربة المستخدم على اتصالات بطيئة. قد يتم تحميل الأكواد البرمجية بشكل كبير في وقت لاحق من العرض الأولي للصفحة، لذلك قد يشعر المستخدم أن التغيير إلى واجهة مستخدم مختلفة مباشرة بعد الترطيب قد يكون مفاجئًا له.
321+
322+
</Pitfall>
323+
324+
---
325+

0 commit comments

Comments
 (0)