Next.js
Wink komponente so brskalniku namenjeni custom elementi — CDN skripte je treba naložiti na strani odjemalca. Spodnji vzorci zajemajo tako App Router (Next.js 13+) kot tudi zastareli Pages Router.
@wink/elements npm package Namestite in naložite CDN paket z TypeScript tipi.
Namestitev
Section titled “Namestitev”npm install @wink/elementsApp Router (Next.js 13+)
Section titled “App Router (Next.js 13+)”Ustvarite klientno komponento, ki enkrat pokliče load() in jo upodobite znotraj vaše root postavitve:
'use client';import { useEffect } from 'react';import { load } from '@wink/elements';
export function WinkLoader() { useEffect(() => { load({ clientId: process.env.NEXT_PUBLIC_WINK_CLIENT_ID! }); }, []); return null;}import { WinkLoader } from '@/components/WinkLoader';
export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <WinkLoader /> {children} </body> </html> );}Uporabite Wink komponente v kateri koli Client Component:
'use client';
export default function HotelsPage() { return ( <main> <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" /> </main> );}Pages Router
Section titled “Pages Router”Naložite enkrat v _app.tsx:
import type { AppProps } from 'next/app';import { useEffect } from 'react';import { load } from '@wink/elements';
export default function App({ Component, pageProps }: AppProps) { useEffect(() => { load({ clientId: process.env.NEXT_PUBLIC_WINK_CLIENT_ID! }); }, []); return <Component {...pageProps} />;}Nato uporabite Wink komponente na kateri koli strani:
export default function HotelsPage() { return <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />;}Okoljske spremenljivke
Section titled “Okoljske spremenljivke”Dodajte v .env.local:
NEXT_PUBLIC_WINK_CLIENT_ID=your-client-idPredpona NEXT_PUBLIC_ je potrebna, da se spremenljivka izpostavi brskalniškemu paketu.
TypeScript tipi
Section titled “TypeScript tipi”Dodajte datoteko z deklaracijami, da TypeScript prepozna imena custom elementov v JSX — za celoten wink-elements.d.ts primer glejte React integration page.