الوثائق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 وكل مضيف معاينة إلى نطاقات المشروع في لوحة التحكم.