
Език 🇧🇬 Български
Документация
Първи стъпки
Използване
Конфигурация
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 не проследява автоматично дълбоки промени в произволни обекти, така че промените в конфигурацията след първото рендиране трябва да бъдат подадени явно. Всеки widget приема 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() е безопасно да се извиква по всяко време:
- Преди скриптът да е зареден: частичният обект се запазва и се прилага при инициализация.
- По време на асинхронна инициализация (reviews-summary, user-activity-feed): частичният обект се поставя в опашка и се прилага, когато callback-ът се изпълни.
- След инициализация: той директно препраща към
.update()метода на живия widget.
Императивен API на handle
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' });
Компоненти 
Всеки widget от fastcomments-react е наличен под същото име:
| Component | Handle type | Вградено съдържание |
|---|---|---|
FastCommentsCommentWidget |
FastCommentsCommentWidgetHandle |
Флагмански widget за коментари в реално време |
FastCommentsCommentCountWidget |
FastCommentsCommentCountWidgetHandle |
Инлайн значка за брой коментари |
FastCommentsLiveChatWidget |
FastCommentsLiveChatWidgetHandle |
Поточен widget за чат в реално време |
FastCommentsCollabChatWidget |
FastCommentsCollabChatWidgetHandle |
Съвместен чат, прикрепен към текст |
FastCommentsImageChatWidget |
FastCommentsImageChatWidgetHandle |
Коментари върху изображения по региони |
FastCommentsRecentCommentsWidget |
FastCommentsRecentCommentsWidgetHandle |
Фийд с последни коментари |
FastCommentsRecentDiscussionsWidget |
FastCommentsRecentDiscussionsWidgetHandle |
Фийд с последни дискусии |
FastCommentsReviewsSummaryWidget |
FastCommentsReviewsSummaryWidgetHandle |
Обобщение на оценки със звезди |
FastCommentsTopPagesWidget |
FastCommentsTopPagesWidgetHandle |
Класация на най-коментираните страници |
FastCommentsUserActivityFeedWidget |
FastCommentsUserActivityFeedWidgetHandle |
Хронология на активността на потребителя |
Уиджети, които се прикрепят към съществуващ елемент
FastCommentsCollabChatWidget и FastCommentsImageChatWidget се монтират в елемент, предоставен от извикващия. Подайте accessor 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" за да пренасочите трафика на widget-а през клъстъра в ЕС.
Нужда от помощ?
Ако срещнете проблеми или имате въпроси относно библиотеката SolidJS, моля:
Принос
Приносите са добре дошли! Моля, посетете репозитория в GitHub за указания относно приноса.