콘텐츠로 이동

Qwik

Qwik의 재개 가능성 모델은 JavaScript가 사용자가 상호작용할 때만 지연 실행됨을 의미합니다. 컴포넌트가 보일 때 브라우저에서 반드시 실행되어야 하는 코드는 useVisibleTask$를 사용하세요.

Terminal window
npm install @wink/elements

useVisibleTask$는 브라우저 전용으로 즉시 실행되는 Qwik의 라이프사이클 훅입니다. 루트 레이아웃에 배치하세요:

src/routes/layout.tsx
import { component$, useVisibleTask$ } from '@builder.io/qwik';
import { load } from '@wink/elements';
export default component$(() => {
useVisibleTask$(() => {
load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID });
});
return (
<main>
<Slot />
</main>
);
});
src/routes/hotels/index.tsx
import { component$ } from '@builder.io/qwik';
export default component$(() => {
return (
<main>
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />
<wink-lookup />
</main>
);
});

TypeScript — JSX 내장 요소 선언하기

섹션 제목: “TypeScript — JSX 내장 요소 선언하기”

Qwik은 자체 JSX 네임스페이스를 사용합니다. 선언 파일에서 확장하세요:

src/wink-elements.d.ts
import type {
WinkContentLoaderAttributes,
WinkLookupAttributes,
WinkSearchButtonAttributes,
WinkAccountButtonAttributes,
WinkItineraryButtonAttributes,
WinkShoppingCartButtonAttributes,
WinkAppLoaderAttributes,
} from '@wink/elements';
declare module '@builder.io/qwik' {
namespace JSX {
interface IntrinsicElements {
'wink-content-loader': WinkContentLoaderAttributes;
'wink-lookup': WinkLookupAttributes;
'wink-search-button': WinkSearchButtonAttributes;
'wink-account-button': WinkAccountButtonAttributes;
'wink-itinerary-button': WinkItineraryButtonAttributes;
'wink-shopping-cart-button': WinkShoppingCartButtonAttributes;
'wink-app-loader': WinkAppLoaderAttributes;
}
}
}

Qwik(Vite 기반)은 PUBLIC_ 접두사가 붙은 변수를 브라우저에 노출합니다:

.env
PUBLIC_WINK_CLIENT_ID=your-client-id