FastComments.com

Dodajte komentare u svoju SolidJS aplikaciju

Ovo je službena SolidJS biblioteka za FastComments.

Ugradite widgete za komentiranje uživo, chat i recenzije u svoju SolidJS aplikaciju.

Repozitorij

Pogledajte na GitHubu


Instalacija Internal Link

npm

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:

ComponentHandle typeEmbed loaded
FastCommentsCommentWidgetFastCommentsCommentWidgetHandleGlavni widget za komentare uživo
FastCommentsCommentCountWidgetFastCommentsCommentCountWidgetHandleInline bedž s brojačem komentara
FastCommentsLiveChatWidgetFastCommentsLiveChatWidgetHandleStreaming widget za chat uživo
FastCommentsCollabChatWidgetFastCommentsCollabChatWidgetHandleKolaborativni chat vezan za tekst
FastCommentsImageChatWidgetFastCommentsImageChatWidgetHandleKomentari na slici temeljeni na regijama
FastCommentsRecentCommentsWidgetFastCommentsRecentCommentsWidgetHandleFeed nedavnih komentara
FastCommentsRecentDiscussionsWidgetFastCommentsRecentDiscussionsWidgetHandleFeed nedavnih rasprava
FastCommentsReviewsSummaryWidgetFastCommentsReviewsSummaryWidgetHandleSažetak ocjena zvjezdicama
FastCommentsTopPagesWidgetFastCommentsTopPagesWidgetHandleLjestvica najkomentiranijih stranica
FastCommentsUserActivityFeedWidgetFastCommentsUserActivityFeedWidgetHandleVremenska 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.