الوثائقReact (Vite وCRA)4 دقيقة قراءة
React (Vite وCRA)
كائن واحد للتطبيق، ومزوّد سياق واحد، وهوك واحد. ومشكلة React الوحيدة هي إعادة الرسم: ترجمة تصل بعد أول عرض يجب أن تُعيد رسم الشجرة.
siyak.ts
import { init, type Siyak } from 'siyak-js';
export const siyak: Siyak = init({
apiKey: import.meta.env.VITE_SIYAK_KEY,
endpoint: import.meta.env.VITE_SIYAK_URL,
target: 'ar',
// cache:false in tests and Storybook; leave localStorage on in the app.
cache: import.meta.env.MODE === 'test' ? false : undefined,
});SiyakProvider.tsx
import { createContext, useContext, useEffect, useState, type ReactNode } from 'react';
import { siyak } from './siyak';
const Ctx = createContext(siyak);
export function SiyakProvider({ children }: { children: ReactNode }) {
const [ready, setReady] = useState(false);
useEffect(() => {
void siyak.preload(); // one request, every known string
siyak.onReady.then(() => setReady(true));
}, []);
return <Ctx.Provider value={siyak}>{children}</Ctx.Provider>;
// ready is only here to force one repaint after the batch lands.
}
export const useSiyak = () => useContext(Ctx);Checkout.tsx
const { t } = useSiyak();
<button>{t('Continue', 'screen:checkout')}</button>- يكرّر Strict Mode تنفيذ الأثر مرّتين في التطوير؛ وتُجمَّع الطلبات المكرّرة للنص نفسه، فلا يكلّف التركيب الثاني شيئًا.
- وإن آثرت عدم إعادة رسم الشجرة كلها فاشترك لكل نص بـ useSyncExternalStore — فطابور الحزمة ليس مُصدر أحداث؛ اضبط على جاهزية المزوّد أو على عدّاد نسخة تتابعه أنت.
- أضف http://localhost:5173 وكل مضيف معاينة إلى نطاقات المشروع في لوحة التحكم.