FastComments.com

Add Comments to Your SolidJS App


Ovo je službena SolidJS knjižnica za FastComments.

Ugradite widgete za komentare uživo, chat i recenzije u vašu SolidJS aplikaciju.

Repozitorij

Pogledajte na GitHubu


Instalacija Internal Link

npm install fastcomments-solidjs

Korištenje Internal Link

import { FastCommentsCommentWidget } from 'fastcomments-solidjs';

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

Reagiranje na promjene konfiguracije (imperativni pristup) Internal Link

Solid automatski ne prati duboke mutacije na proizvoljnim objektima, stoga promjene konfiguracije nakon prvog renderiranja moraju biti eksplicitno poslane. Svaki widget prihvaća apiRef koji vraća handle; pozovite handle.update(partial) iz createEffect kako biste potaknuli reaktivnost:

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() je sigurno pozvati u bilo kojem trenutku:

  • Prije nego što se skripta učita: djelomični podaci se pohranjuju i primjenjuju pri inicijalizaciji.
  • Tijekom asinhrone inicijalizacije (reviews-summary, user-activity-feed): djelomični podaci se stavljaju u red i primjenjuju kada se callback riješi.
  • Nakon inicijalizacije: on ih prosljeđuje izravno metodi .update() aktivnog widgeta.

Imperativni handle API

interface WidgetHandle<Config> {
  getInstance: () => WidgetInstance | null;   // zadnja aktivna instanca (ili null prije mount)
  onInstance: (cb: (instance: WidgetInstance) => void) => void; // poziva se jednom kada je instanca spremna
  update: (partial: Partial<Config>) => void; // spoji i pošalji konfiguraciju
}

Koristite getInstance() za imperativne akcije koje nisu pokrivene s .update(), npr. openProfile:

const openProfile = () =>
  (handle?.getInstance() as { openProfile?: (o: { userId: string }) => void } | null)
    ?.openProfile?.({ userId: 'demo' });

Komponente Internal Link

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

Component Handle type Embed loaded
FastCommentsCommentWidget FastCommentsCommentWidgetHandle Glavni widget za komentare uživo
FastCommentsCommentCountWidget FastCommentsCommentCountWidgetHandle Inline bedž s brojačem komentara
FastCommentsLiveChatWidget FastCommentsLiveChatWidgetHandle Streaming widget za chat uživo
FastCommentsCollabChatWidget FastCommentsCollabChatWidgetHandle Kolaborativni chat vezan za tekst
FastCommentsImageChatWidget FastCommentsImageChatWidgetHandle Komentari na slici temeljeni na regijama
FastCommentsRecentCommentsWidget FastCommentsRecentCommentsWidgetHandle Feed nedavnih komentara
FastCommentsRecentDiscussionsWidget FastCommentsRecentDiscussionsWidgetHandle Feed nedavnih rasprava
FastCommentsReviewsSummaryWidget FastCommentsReviewsSummaryWidgetHandle Sažetak ocjena zvjezdicama
FastCommentsTopPagesWidget FastCommentsTopPagesWidgetHandle Ljestvica najkomentiranijih stranica
FastCommentsUserActivityFeedWidget FastCommentsUserActivityFeedWidgetHandle Vremenska linija aktivnosti korisnika

Widgets that attach to an existing element

FastCommentsCollabChatWidget i FastCommentsImageChatWidget se montiraju u element koji pozivatelj osigura. 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" kako biste usmjerili promet widgeta kroz EU klaster.

Primjeri Internal Link

Cjelovita aplikacija za prikaz (showcase) nalazi se u examples/example-showcase/. Preslikava React showcase i obuhvaća svaki widget te uobičajene tokove (tamni način rada, paginacija, SSO, povratni pozivi).

cd examples/example-showcase
npm install
npm run dev

Izrada Internal Link

npm install
npm run build       # biblioteka -> dist/
npm test            # vitest osnovna provjera
npm run build:demo  # prikaz -> demo-dist/

Trebate pomoć?

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

Doprinosi

Doprinosi su dobrodošli! Posjetite GitHub repozitorij za smjernice o doprinosima.