
Мова 🇺🇦 Українська
Документація
Початок роботи
Використання
Налаштування
Add Comments to Your SolidJS App
Це офіційна бібліотека SolidJS для FastComments.
Вбудуйте віджети для живих коментарів, чату та рецензування у ваш застосунок SolidJS.
Репозиторій
Жива демонстрація 
Перегляньте всі віджети в режимі реального часу за адресою https://fastcomments.com/commenting-system-for-solidjs.
Використання 
import { FastCommentsCommentWidget } from 'fastcomments-solidjs';
export default function App() {
return <FastCommentsCommentWidget tenantId="demo" urlId="some-page-id" />;
}
Реагування на зміни конфігурації (імперативний обробник) 
Solid не відстежує автоматично глибокі мутації в довільних об'єктах, тому
зміни конфігурації після першого рендеру потрібно передавати явно. Кожен віджет
приймає apiRef, який повертає дескриптор; викликайте handle.update(partial) з
createEffect, щоб забезпечити реактивність:
import { createEffect, createSignal } from 'solid-js';
import { FastCommentsCommentWidget, type FastCommentsCommentWidgetHandle } from 'fastcomments-solidjs';
export default function Paginated() {
const [page, setPage] = createSignal(0);
let handle: FastCommentsCommentWidgetHandle | undefined;
createEffect(() => handle?.update({ urlId: `product-${page()}` }));
return (
<>
<button onClick={() => setPage(page() + 1)}>next</button>
<FastCommentsCommentWidget
apiRef={(h) => (handle = h)}
tenantId="demo"
urlId={`product-${page()}`}
/>
</>
);
}
update() безпечно викликати в будь-який момент:
- Before the script has loaded: the partial is stashed and applied at init.
- During an async init (reviews-summary, user-activity-feed): the partial is queued and applied when the callback resolves.
- After init: it forwards straight to the live widget's
.update()method.
Імперативний API дескриптора
interface WidgetHandle<Config> {
getInstance: () => WidgetInstance | null; // останній активний екземпляр (або null до монтування)
onInstance: (cb: (instance: WidgetInstance) => void) => void; // викликається, коли екземпляр готовий
update: (partial: Partial<Config>) => void; // зливає і передає конфігурацію
}
Використовуйте getInstance() для імперативних дій, які не покриває .update(), наприклад openProfile:
const openProfile = () =>
(handle?.getInstance() as { openProfile?: (o: { userId: string }) => void } | null)
?.openProfile?.({ userId: 'demo' });
Компоненти 
Кожен віджет з fastcomments-react доступний під тією ж назвою:
| Component | Handle type | Embed loaded |
|---|---|---|
FastCommentsCommentWidget |
FastCommentsCommentWidgetHandle |
Флагманський віджет для коментування в реальному часі |
FastCommentsCommentCountWidget |
FastCommentsCommentCountWidgetHandle |
Вбудований бейдж із кількістю коментарів |
FastCommentsLiveChatWidget |
FastCommentsLiveChatWidgetHandle |
Віджет потокового чату в реальному часі |
FastCommentsCollabChatWidget |
FastCommentsCollabChatWidgetHandle |
Спільний чат, прив'язаний до тексту |
FastCommentsImageChatWidget |
FastCommentsImageChatWidgetHandle |
Коментарі до зображень на основі регіонів |
FastCommentsRecentCommentsWidget |
FastCommentsRecentCommentsWidgetHandle |
Стрічка останніх коментарів |
FastCommentsRecentDiscussionsWidget |
FastCommentsRecentDiscussionsWidgetHandle |
Стрічка останніх обговорень |
FastCommentsReviewsSummaryWidget |
FastCommentsReviewsSummaryWidgetHandle |
Зведення рейтингу за зірками |
FastCommentsTopPagesWidget |
FastCommentsTopPagesWidgetHandle |
Рейтинг сторінок за кількістю коментарів |
FastCommentsUserActivityFeedWidget |
FastCommentsUserActivityFeedWidgetHandle |
Хронологія активності користувача |
Віджети, які приєднуються до існуючого елемента
FastCommentsCollabChatWidget та FastCommentsImageChatWidget монтуються в елемент, що надається викликачем. Передайте аксесор targetRef, який повертає елемент після монтування:
import { FastCommentsImageChatWidget } from 'fastcomments-solidjs';
export default function ImageChat() {
let img: HTMLImageElement | undefined;
return (
<>
<img ref={img} src="/screenshot.png" alt="" />
<FastCommentsImageChatWidget
tenantId="demo"
urlId="my-image"
targetRef={() => img}
/>
</>
);
}
Регіони
Передайте region="eu", щоб направити трафік віджетів через кластер ЄС.
Потрібна допомога?
Якщо ви зіткнулися з проблемами або маєте питання щодо SolidJS Library, будь ласка:
Участь
Внески вітаються! Будь ласка, відвідайте репозиторій GitHub для інструкцій щодо внесення.