Next.js Integration

These instructions assume you've already created a JamComments account as well as a "site" within that account. If you haven't, learn more about that process on the Getting Started page.

Prerequisites

In order to use this plugin, you'll need a JamComments account, where you'll also need to have created a site and generated an API key.

Installation

npm install @jam-comments/next

Usage

In your getStaticProps or getServerSideProps hook, retrieve the comments for a given post by using the fetchMarkup method, and then passing your API key, domain, and comment data to your rendered page, which should then be passed to the <JamComments /> component.

// [slug].js

import { JamComments } from "@jam-comments/next";

export default function Post({ content, commentData }) {
  return (
    <article>
      <div dangerouslySetInnerHTML={{ __html: content }}></div>

      <JamComments markup={commentData} />
    </article>
  );
}

export async function getStaticProps({ params }) {
  const content = await getContentFromSomewhere();
  const { fetchMarkup } = require("@jam-comments/next");

  // Retrieve all comments already made on this post.
  const commentData = await fetchMarkup({
    domain: process.env.JAM_COMMENTS_DOMAIN,
    apiKey: process.env.JAM_COMMENTS_API_KEY,
    path: `/posts/${params.slug}`,
  });

  // Pass domain, API key, and comments to `props` for use client-side.
  return {
    props: {
      commentData,
      content,
    },
  };
}

Contributions

The source for this plugin is open to contributions. If you have a bug fix or idea for improvement, leave a pull request or issue in the GitHub repository.