تخطَّ إلى المحتوى

ريمكس

ريمكس هو إطار عمل متكامل يقوم بالتصيير على الخادم بشكل افتراضي. قم بتحميل CDN الخاص بـ Wink فقط على جهة العميل باستخدام useEffect في المكون الجذري.

Terminal window
npm install @wink/elements

useEffect يعمل فقط في المتصفح، ولا يعمل أثناء التصيير على الخادم:

app/root.tsx
import { useEffect } from 'react';
import {
Links, Meta, Outlet, Scripts, ScrollRestoration,
} from '@remix-run/react';
import { load } from '@wink/elements';
export default function App() {
useEffect(() => {
load({ clientId: import.meta.env.VITE_WINK_CLIENT_ID });
}, []);
return (
<html lang="en">
<head>
<Meta />
<Links />
</head>
<body>
<Outlet />
<ScrollRestoration />
<Scripts />
</body>
</html>
);
}

يدعم Remix (المبني على Vite، الإصدار 2.8+) import.meta.env للمتغيرات المكشوفة للمتصفح. استخدم بادئة VITE_ لجعلها متاحة في حزمة المتصفح:

.env
VITE_WINK_CLIENT_ID=your-client-id

لإعدادات Remix الأقدم التي تستخدم محول Node.js، قم بإرجاع معرف العميل من محمل الجذر وقراءته في المكون:

app/root.tsx
import { json } from '@remix-run/node';
import { useLoaderData } from '@remix-run/react';
export async function loader() {
return json({ winkClientId: process.env.WINK_CLIENT_ID });
}
export default function App() {
const { winkClientId } = useLoaderData<typeof loader>();
useEffect(() => {
if (winkClientId) {
load({ clientId: winkClientId });
}
}, [winkClientId]);
// ...
}
app/routes/hotels.tsx
export default function HotelsRoute() {
return (
<main>
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />
</main>
);
}

أضف ملف إعلان JSX intrinsic من صفحة تكامل React — يستخدم Remix React تحت الغطاء.