FastComments.com

Add Comments to Your SolidJS App

To je uradna knjižnica SolidJS za FastComments.

Vdelajte gradnike za komentiranje v živo, klepet in recenzije v svojo aplikacijo SolidJS.

Repozitorij

Ogled na GitHubu


Namestitev Internal Link

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:

Komponenta Tip ročaja Naložena vdelava
FastCommentsCommentWidget FastCommentsCommentWidgetHandle Glavni pripomoček za komentiranje v živo
FastCommentsCommentCountWidget FastCommentsCommentCountWidgetHandle Vrstični števec komentarjev
FastCommentsLiveChatWidget FastCommentsLiveChatWidgetHandle Pretakajoči pripomoček za klepet v živo
FastCommentsCollabChatWidget FastCommentsCollabChatWidgetHandle Sodelovalni klepet, pritrjen na besedilo
FastCommentsImageChatWidget FastCommentsImageChatWidgetHandle Komentarji na sliko po regijah
FastCommentsRecentCommentsWidget FastCommentsRecentCommentsWidgetHandle Tok nedavnih komentarjev
FastCommentsRecentDiscussionsWidget FastCommentsRecentDiscussionsWidgetHandle Tok nedavnih razprav
FastCommentsReviewsSummaryWidget FastCommentsReviewsSummaryWidgetHandle Povzetek ocen z zvezdicami
FastCommentsTopPagesWidget FastCommentsTopPagesWidgetHandle Lestvica najbolj komentiranih strani
FastCommentsUserActivityFeedWidget FastCommentsUserActivityFeedWidgetHandle Č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.