FastComments.com

Tilføj kommentarer til din SolidJS-app

Dette er det officielle SolidJS-bibliotek til FastComments.

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

Arkiv

Se på GitHub

AI-kodningsagenter Internal Link

skills.sh

Giv din kodeagent den FastComments‑kontekst, den har brug for – widgets, konfiguration, Secure SSO, REST‑API’en og SDK’erne:

npx skills add fastcomments/skills

Fungerer med Claude Code, Codex, Cursor, Copilot, Gemini og alle andre agenter, som skills CLI understøtter.

Installér Internal Link

npm

npm install fastcomments-solidjs

Brug Internal Link

import { FastCommentsCommentWidget } from 'fastcomments-solidjs';

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

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

Solid sporer ikke automatisk dybe mutationer på vilkårlige objekter, så konfigurationsændringer efter første render skal pushes eksplicit. Hver widget accepterer en apiRef, der returnerer et handle; kald handle.update(partial) fra en 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() kan trygt kaldes når som helst:

  • Før scriptet er indlæst: den partielle konfiguration gemmes og anvendes ved init.
  • Under en asynkron init (reviews-summary, user-activity-feed): den partielle konfiguration sættes i kø og anvendes, når callback'en resolves.
  • Efter init: den videresendes direkte til den live widgets .update()-metode.

Imperativt handle-API

interface WidgetHandle<Config> {
  getInstance: () => WidgetInstance | null;   // seneste live-instans (eller null før mount)
  onInstance: (cb: (instance: WidgetInstance) => void) => void; // udløses én gang, når instansen er klar
  update: (partial: Partial<Config>) => void; // merge-and-push konfiguration
}

Brug getInstance() til imperative handlinger, der ikke er dækket 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:

ComponentHandle typeEmbed loaded
FastCommentsCommentWidgetFastCommentsCommentWidgetHandleFlagship live-kommenterings-widget
FastCommentsCommentCountWidgetFastCommentsCommentCountWidgetHandleInline badge med kommentarantal
FastCommentsLiveChatWidgetFastCommentsLiveChatWidgetHandleStreaming live-chat-widget
FastCommentsCollabChatWidgetFastCommentsCollabChatWidgetHandleTekst-ankret samarbejds-chat
FastCommentsImageChatWidgetFastCommentsImageChatWidgetHandleRegionsbaserede billedkommentarer
FastCommentsRecentCommentsWidgetFastCommentsRecentCommentsWidgetHandleFeed med nylige kommentarer
FastCommentsRecentDiscussionsWidgetFastCommentsRecentDiscussionsWidgetHandleFeed med nylige diskussioner
FastCommentsReviewsSummaryWidgetFastCommentsReviewsSummaryWidgetHandleOpsummering af stjernebedømmelser
FastCommentsTopPagesWidgetFastCommentsTopPagesWidgetHandleTop-liste over mest kommenterede sider
FastCommentsUserActivityFeedWidgetFastCommentsUserActivityFeedWidgetHandlePer-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.

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