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


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

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:

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.

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.