Remix
A Remix egy teljes körű keretrendszer, amely alapértelmezés szerint szerveroldalon renderel. A Wink CDN-t csak a kliensoldalon töltsd be a useEffect használatával a gyökér komponensben.
@wink/elements npm csomag Telepítsd és töltsd be a CDN csomagot TypeScript típusokkal.
Telepítés
Szekció neve “Telepítés”npm install @wink/elementsBetöltés az app/root.tsx-ben
Szekció neve “Betöltés az app/root.tsx-ben”A useEffect csak a böngészőben fut, soha nem a szerveroldali renderelés során:
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> );}Környezeti változók
Szekció neve “Környezeti változók”A Remix (Vite-alapú, v2.8+) támogatja az import.meta.env használatát böngészőben elérhető változókhoz. A böngészői csomag számára való kitettséghez előtagként használd a VITE_-t:
VITE_WINK_CLIENT_ID=your-client-idRégebbi Remix beállításoknál, amelyek Node.js adaptert használnak, add vissza a kliensazonosítót egy root loaderből, és olvasd be a komponensben:
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]);
// ...}Használat az útvonalakon
Szekció neve “Használat az útvonalakon”export default function HotelsRoute() { return ( <main> <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" /> </main> );}TypeScript típusok
Szekció neve “TypeScript típusok”Add hozzá a JSX intrinsic deklarációs fájlt a React integráció oldaláról — a Remix React-et használ a háttérben.