مكوّنات النية المخصصة
إذا كان لديك كثير من الأهداف من النوع نفسه، فغلّف useIntentTarget مرة واحدة ثم أعد استخدام المكوّن الناتج.
IntentButton قابل لإعادة الاستخدام
يقبل خصائص الزر العادية بالإضافة إلى onIntent وimportance وcost.
"use client";
import type { ButtonHTMLAttributes } from "react";
import {
useIntentTarget,
type UseIntentTargetOptions,
} from "intent-link";
type IntentButtonProps =
ButtonHTMLAttributes<HTMLButtonElement> &
UseIntentTargetOptions;
export function IntentButton({
onIntent,
importance,
cost,
children,
...buttonProps
}: IntentButtonProps) {
const intentRef = useIntentTarget<HTMLButtonElement>({
onIntent,
importance,
cost,
});
return (
<button ref={intentRef} {...buttonProps}>
{children}
</button>
);
}الاستخدام
<IntentButton
className="preview-button"
onIntent={preloadPreview}
>
Preview
</IntentButton>IntentArticle قابل لإعادة الاستخدام
يصلح النمط نفسه لبطاقات المنتجات أو الحاويات ذات المعنى.
"use client";
import type { HTMLAttributes } from "react";
import {
useIntentTarget,
type UseIntentTargetOptions,
} from "intent-link";
type IntentArticleProps =
HTMLAttributes<HTMLElement> &
UseIntentTargetOptions;
export function IntentArticle({
onIntent,
importance,
cost,
children,
...articleProps
}: IntentArticleProps) {
const intentRef = useIntentTarget<HTMLElement>({
onIntent,
importance,
cost,
});
return (
<article ref={intentRef} {...articleProps}>
{children}
</article>
);
}الاستخدام
<IntentArticle
className="product-card"
onIntent={() => preloadProduct(productId)}
>
<ProductImage />
<ProductDetails />
</IntentArticle>