FastComments.com

Dodajte komentarje v svojo SolidJS aplikacijo

To je uradna knjižnica SolidJS za FastComments.

Vdelajte v živo komentiranje, klepet in gradnike za recenzije v vašo SolidJS aplikacijo.

Repozitorij

Oglejte si na GitHubu


Namestitev Internal Link

npm

npm install fastcomments-solidjs

Uporaba Internal Link

import { FastCommentsCommentWidget } from 'fastcomments-solidjs';

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

Reagiranje na spremembe konfiguracije (imperativni vmesnik) Internal Link

Solid samodejno ne sledi globokim mutacijam poljubnih objektov, zato je treba spremembe konfiguracije po prvem renderiranju eksplicitno potisniti. Vsak widget sprejme apiRef, ki vrne ročaj; iz createEffect pokličite handle.update(partial), da poganjate 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 varno klicati kadarkoli:

  • Pred nalaganjem skripte: partial se shrani in uporabi pri init.
  • Med async init (reviews-summary, user-activity-feed): partial se postavi v čakalno vrsto in uporabi, ko se callback razreši.
  • Po init: ga posreduje neposredno metodi .update() živega widgeta.

Imperativni API ročaja

interface WidgetHandle<Config> {
  getInstance: () => WidgetInstance | null;   // najnovejša živa instanca (ali null pred mount)
  onInstance: (cb: (instance: WidgetInstance) => void) => void; // sproži se, ko je instanca pripravljena
  update: (partial: Partial<Config>) => void; // združi in potisni konfiguracijo
}

Uporabite getInstance() za imperativna dejanja, ki jih .update() ne pokriva, npr. openProfile:

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

Komponente Internal Link


Vsak pripomoček iz fastcomments-react je na voljo pod istim imenom:

KomponentaTip ročajaNaložena vdelava
FastCommentsCommentWidgetFastCommentsCommentWidgetHandleGlavni pripomoček za komentiranje v živo
FastCommentsCommentCountWidgetFastCommentsCommentCountWidgetHandleVrstični števec komentarjev
FastCommentsLiveChatWidgetFastCommentsLiveChatWidgetHandlePretakajoči pripomoček za klepet v živo
FastCommentsCollabChatWidgetFastCommentsCollabChatWidgetHandleSodelovalni klepet, pritrjen na besedilo
FastCommentsImageChatWidgetFastCommentsImageChatWidgetHandleKomentarji na sliko po regijah
FastCommentsRecentCommentsWidgetFastCommentsRecentCommentsWidgetHandleTok nedavnih komentarjev
FastCommentsRecentDiscussionsWidgetFastCommentsRecentDiscussionsWidgetHandleTok nedavnih razprav
FastCommentsReviewsSummaryWidgetFastCommentsReviewsSummaryWidgetHandlePovzetek ocen z zvezdicami
FastCommentsTopPagesWidgetFastCommentsTopPagesWidgetHandleLestvica najbolj komentiranih strani
FastCommentsUserActivityFeedWidgetFastCommentsUserActivityFeedWidgetHandleČasovnica aktivnosti po uporabniku

Pripomočki, ki se pritnejo na obstoječi element

FastCommentsCollabChatWidget and FastCommentsImageChatWidget mount into a caller-supplied element. Posredujte dostopnik targetRef, ki vrne element po namestitvi:

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

Posredujte region="eu" za usmerjanje prometa vdelav prek EU grozda.

Predstavitev Internal Link

Popolna predstavitvena aplikacija se nahaja v examples/example-showcase/. Zrcali React predstavitev in pokriva vse widgete ter pogoste poteke (temni način, straničenje, SSO, povratni klici).

cd examples/example-showcase
npm install
npm run dev

Gradnja Internal Link

npm install
npm run build       # library -> dist/
npm test            # vitest smoke test
npm run build:demo  # showcase -> demo-dist/

Potrebujete pomoč?

Če naletite na težave ali imate vprašanja glede knjižnice SolidJS, prosimo:

Prispevanje

Prispevki so dobrodošli! Prosimo, obiščite GitHub repozitorij za smernice za prispevanje.