FastComments.com

Adicionar Comentários ao Seu Aplicativo SolidJS

Esta é a biblioteca oficial do SolidJS para o FastComments.

Incorpore widgets de comentários em tempo real, chat e revisão no seu app SolidJS.

Repositório

Ver no GitHub


Instalação Internal Link

npm

npm install fastcomments-solidjs

Uso Internal Link

import { FastCommentsCommentWidget } from 'fastcomments-solidjs';

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

Reagindo a Alterações de Configuração (Handle Imperativo) Internal Link

Solid não rastreia automaticamente mutações profundas em objetos arbitrários, portanto as alterações de configuração após a primeira renderização devem ser aplicadas explicitamente. Every widget aceita um apiRef que retorna um handle; chame handle.update(partial) a partir de um createEffect para acionar a reatividade:

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() é seguro chamar a qualquer momento:

  • Antes do script ser carregado: o partial é armazenado e aplicado na inicialização.
  • Durante uma inicialização assíncrona (reviews-summary, user-activity-feed): o partial é enfileirado e aplicado quando o callback for resolvido.
  • Após a inicialização: ele é encaminhado diretamente para o método .update() do widget ativo.

API imperativa do handle

interface WidgetHandle<Config> {
  getInstance: () => WidgetInstance | null;   // instância ao vivo mais recente (ou null antes do mount)
  onInstance: (cb: (instance: WidgetInstance) => void) => void; // acionado quando a instância estiver pronta
  update: (partial: Partial<Config>) => void; // mescla e envia a configuração
}

Use getInstance() para ações imperativas que não são cobertas por .update(), por exemplo, openProfile:

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

Componentes Internal Link


Cada widget do fastcomments-react está disponível com o mesmo nome:

ComponenteTipo de handleEmbed carregado
FastCommentsCommentWidgetFastCommentsCommentWidgetHandleWidget principal de comentários ao vivo
FastCommentsCommentCountWidgetFastCommentsCommentCountWidgetHandleBadge de contagem de comentários em linha
FastCommentsLiveChatWidgetFastCommentsLiveChatWidgetHandleWidget de chat ao vivo em streaming
FastCommentsCollabChatWidgetFastCommentsCollabChatWidgetHandleChat colaborativo ancorado ao texto
FastCommentsImageChatWidgetFastCommentsImageChatWidgetHandleComentários por região na imagem
FastCommentsRecentCommentsWidgetFastCommentsRecentCommentsWidgetHandleFeed de comentários recentes
FastCommentsRecentDiscussionsWidgetFastCommentsRecentDiscussionsWidgetHandleFeed de discussões recentes
FastCommentsReviewsSummaryWidgetFastCommentsReviewsSummaryWidgetHandleResumo de avaliação por estrelas
FastCommentsTopPagesWidgetFastCommentsTopPagesWidgetHandleClassificação das páginas mais comentadas
FastCommentsUserActivityFeedWidgetFastCommentsUserActivityFeedWidgetHandleLinha do tempo de atividade por usuário

Widgets que se anexam a um elemento existente

FastCommentsCollabChatWidget and FastCommentsImageChatWidget mount into a caller-supplied element. Passe um acessor targetRef que retorne o elemento depois que ele for montado:

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

Regiões

Passe region="eu" para rotear o tráfego do widget através do cluster da UE.

Demonstração Internal Link


Um aplicativo de showcase completo está em examples/example-showcase/. Ele espelha o showcase em React e abrange todos os widgets, além de fluxos comuns (modo escuro, paginação, SSO, callbacks).

cd examples/example-showcase
npm install
npm run dev

Compilação Internal Link

npm install
npm run build       # biblioteca -> dist/
npm test            # teste rápido do vitest
npm run build:demo  # demonstração -> demo-dist/

Precisa de ajuda?

Se você encontrar algum problema ou tiver dúvidas sobre a biblioteca SolidJS, por favor:

Contribuindo

Contribuições são bem-vindas! Por favor visite o repositório do GitHub para as diretrizes de contribuição.