FastComments.com

Add Comments to Your SolidJS App


Ovo je službena SolidJS biblioteka za FastComments.

Ugradite widgete za komentare uživo, chat i recenzije u vašu SolidJS aplikaciju.

Repozitorij

Pogledajte na GitHubu


Инсталација Internal Link

npm install fastcomments-solidjs

Коришћење Internal Link

import { FastCommentsCommentWidget } from 'fastcomments-solidjs';

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

Реаговање на промјене конфигурације (императивни хендл) Internal Link

Solid аутоматски не прати дубоке измене на произвољним објектима, па измене конфигурације након првог рендера морају бити експлицитно послате. Сваки видгет прихвата apiRef који враћа хендл; позовите handle.update(partial) из createEffect да бисте покренули реактивност:

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() је безбједан за позив у било које вријеме:

  • Пре него што се скрипта учита: partial се привремено складишти и примјењује при иницијализацији.
  • Током асинхроне иницијализације (reviews-summary, user-activity-feed): partial се ставља у ред и примјењује када callback заврши.
  • Након иницијализације: он просљеђује директно на живи видгетову .update() методу.

Императивни handle API

interface WidgetHandle<Config> {
  getInstance: () => WidgetInstance | null;   // најновија активна инстанца (или null прије монтирања)
  onInstance: (cb: (instance: WidgetInstance) => void) => void; // позива се када је инстанца спремна
  update: (partial: Partial<Config>) => void; // спајање и слање конфигурације
}

Use getInstance() for imperative actions that aren't covered by .update(), e.g. openProfile:

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

Компоненте Internal Link


Svaki widget iz fastcomments-react dostupan je pod istim nazivom:

Komponenta Tip handle-a Učitani embed
FastCommentsCommentWidget FastCommentsCommentWidgetHandle Glavni widget za komentarisanje uživo
FastCommentsCommentCountWidget FastCommentsCommentCountWidgetHandle Inline bedž sa brojem komentara
FastCommentsLiveChatWidget FastCommentsLiveChatWidgetHandle Streaming widget za chat uživo
FastCommentsCollabChatWidget FastCommentsCollabChatWidgetHandle Kolaborativni chat prikačen uz tekst
FastCommentsImageChatWidget FastCommentsImageChatWidgetHandle Komentari na slici po regijama
FastCommentsRecentCommentsWidget FastCommentsRecentCommentsWidgetHandle Feed najnovijih komentara
FastCommentsRecentDiscussionsWidget FastCommentsRecentDiscussionsWidgetHandle Feed najnovijih diskusija
FastCommentsReviewsSummaryWidget FastCommentsReviewsSummaryWidgetHandle Sažetak ocjena u zvjezdicama
FastCommentsTopPagesWidget FastCommentsTopPagesWidgetHandle Lista najkomentiranijih stranica
FastCommentsUserActivityFeedWidget FastCommentsUserActivityFeedWidgetHandle Vremenska linija aktivnosti po korisniku

Widgeti koji se montiraju u postojeći element

FastCommentsCollabChatWidget i FastCommentsImageChatWidget montiraju se u element koji obezbijedi pozivalac. Prosledite targetRef accessor koji vraća element nakon što je montiran:

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

Prosledite region="eu" da usmjerite saobraćaj widgeta kroz EU klaster.

Примјери Internal Link

Kompletna aplikacija za prikaz nalazi se u examples/example-showcase/. Ona odražava React prikaz i obuhvata svaki widget, kao i uobičajene tokove (tamni režim, paginacija, SSO, povratni pozivi).

cd examples/example-showcase
npm install
npm run dev

Изградња Internal Link

npm install
npm run build       # библиотека -> dist/
npm test            # vitest брзи тест
npm run build:demo  # приказ -> demo-dist/

Требате помоћ?

Ако наиђете на било какве проблеме или имате питања у вези са SolidJS библиотеком, молимо вас:

Доприноси

Допринoси су добродошли! Посјетите GitHub репозиторијум за упутства о доприносу.