FastComments.com

Add Comments to Your SolidJS App


Dette er det officielle SolidJS-bibliotek til FastComments.

Integrer live-kommentarer, chat og anmeldelses-widgets i din SolidJS-app.

Arkiv

Se på GitHub


Installér Internal Link

npm install fastcomments-solidjs

Brug Internal Link

import { FastCommentsCommentWidget } from 'fastcomments-solidjs';

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

Reager på konfigurationsændringer (imperativ håndtering) Internal Link


Solid følger ikke automatisk dybe mutationer på vilkårlige objekter, så konfigurationsændringer efter den første render skal skubbes eksplicit. Hvert widget accepterer en apiRef som returnerer et håndtag; kald handle.update(partial) fra et createEffect for at drive reaktivitet:

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() er sikkert at kalde når som helst:

  • 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.

Imperativt handle API

interface WidgetHandle<Config> {
  getInstance: () => WidgetInstance | null;   // seneste live-instans (eller null før mount)
  onInstance: (cb: (instance: WidgetInstance) => void) => void; // kaldes når instansen er klar
  update: (partial: Partial<Config>) => void; // slå config sammen og skub den
}

Brug getInstance() til imperative handlinger, som ikke dækkes af .update(), f.eks. openProfile:

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

Komponenter Internal Link


Hver widget fra fastcomments-react er tilgængelig under samme navn:

Component Handle type Embed loaded
FastCommentsCommentWidget FastCommentsCommentWidgetHandle Flagship live-kommenterings-widget
FastCommentsCommentCountWidget FastCommentsCommentCountWidgetHandle Inline badge med kommentarantal
FastCommentsLiveChatWidget FastCommentsLiveChatWidgetHandle Streaming live-chat-widget
FastCommentsCollabChatWidget FastCommentsCollabChatWidgetHandle Tekst-ankret samarbejds-chat
FastCommentsImageChatWidget FastCommentsImageChatWidgetHandle Regionsbaserede billedkommentarer
FastCommentsRecentCommentsWidget FastCommentsRecentCommentsWidgetHandle Feed med nylige kommentarer
FastCommentsRecentDiscussionsWidget FastCommentsRecentDiscussionsWidgetHandle Feed med nylige diskussioner
FastCommentsReviewsSummaryWidget FastCommentsReviewsSummaryWidgetHandle Opsummering af stjernebedømmelser
FastCommentsTopPagesWidget FastCommentsTopPagesWidgetHandle Top-liste over mest kommenterede sider
FastCommentsUserActivityFeedWidget FastCommentsUserActivityFeedWidgetHandle Per-bruger aktivitetstidslinje

Widgets der tilknyttes et eksisterende element

FastCommentsCollabChatWidget og FastCommentsImageChatWidget monteres i et element leveret af kaldende kode. Pass en targetRef accessor som returnerer elementet, når det er monteret:

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

Regioner

Angiv region="eu" for at rute widget-trafik gennem EU-klyngen.

Præsentation Internal Link

En komplet showcase-app ligger i examples/example-showcase/. Den spejler React-showcasen og dækker alle widgets samt almindelige flows (mørk tilstand, paginering, SSO, callbacks).

cd examples/example-showcase
npm install
npm run dev

Byg Internal Link

npm install
npm run build       # bibliotek -> dist/
npm test            # vitest hurtigtest
npm run build:demo  # præsentation -> demo-dist/

Brug for hjælp?

Hvis du støder på problemer eller har spørgsmål om SolidJS-biblioteket, så:

Bidrag

Bidrag er velkomne! Besøg venligst GitHub-repositoriet for retningslinjer for bidrag.