FastComments.com

Add Comments to Your SolidJS App

Ово је званична SolidJS библиотека за FastComments.

Уградите видџете за уживо коментарисање, ћаскање и рецензије у вашу SolidJS апликацију.

Репозиторијум

Погледајте на GitHub


Инсталација Internal Link

npm install fastcomments-solidjs

Коришћење Internal Link

import { FastCommentsCommentWidget } from 'fastcomments-solidjs';

export default function App() {
  return <FastCommentsCommentWidget tenantId="demo" urlId="some-page-id" />;
}

Реаговање на промене конфигурације (императивни приступ) Internal Link

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() је безбедно позивати у било које време:

  • Пре него што се скрипта учита: делимични подаци се привремено чувају и примењују при иницијализацији.
  • Током асинхроне иницијализације (reviews-summary, user-activity-feed): делимични подаци се стављају у ред и примењују када се повратни позив разреши.
  • Након иницијализације: он директно прослеђује живом видгету његову .update() методу.

Императивни 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' });

Компоненте Internal Link

Svaki widget iz fastcomments-react dostupan je pod istim imenom:

Komponenta Tip handle-a Ugrađeni sadržaj
FastCommentsCommentWidget FastCommentsCommentWidgetHandle Glavni widget za komentarisanje uživo
FastCommentsCommentCountWidget FastCommentsCommentCountWidgetHandle Ugrađena oznaka broja komentara
FastCommentsLiveChatWidget FastCommentsLiveChatWidgetHandle Widget za streaming chat uživo
FastCommentsCollabChatWidget FastCommentsCollabChatWidgetHandle Kolaborativni chat vezan za tekst
FastCommentsImageChatWidget FastCommentsImageChatWidgetHandle Komentari na slici vezani za regije
FastCommentsRecentCommentsWidget FastCommentsRecentCommentsWidgetHandle Tok nedavnih komentara
FastCommentsRecentDiscussionsWidget FastCommentsRecentDiscussionsWidgetHandle Tok nedavnih diskusija
FastCommentsReviewsSummaryWidget FastCommentsReviewsSummaryWidgetHandle Sažetak ocjena sa zvjezdicama
FastCommentsTopPagesWidget FastCommentsTopPagesWidgetHandle Lista najkomentisanijih stranica
FastCommentsUserActivityFeedWidget FastCommentsUserActivityFeedWidgetHandle Vremenska linija aktivnosti po korisniku

Widgeti koji se montiraju u postojeći element

FastCommentsCollabChatWidget i FastCommentsImageChatWidget se montiraju u element koji obezbijedi pozivalac. Proslijedite accessor targetRef koji vraća element nakon što je montiran:

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}
      />
    </>
  );
}

Regije

Proslijedite region="eu" da usmjerite saobraćaj widgeta kroz EU klaster.

Примери Internal Link


Potpuna demonstraciona aplikacija se nalazi u examples/example-showcase/. Ona preslikava React showcase i obuhvata svaki widget као и уобичајене токове (тамни режим, пагинација, SSO, повратни позиви).

cd examples/example-showcase
npm install
npm run dev

Изградња Internal Link

npm install
npm run build       # библиотека -> dist/
npm test            # vitest smoke тест
npm run build:demo  # демонстрација -> demo-dist/

Trebate pomoć?

Ako naiđete na bilo kakve probleme ili imate pitanja u vezi sa SolidJS bibliotekom, molimo:

Doprinosi

Doprinosi su dobrodošli! Molimo posjetite GitHub repozitorij za smjernice o doprinosu.