npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

next-csf-over-isr

v1.0.7

Published

# CSF Over ISR とは

Downloads

4

Readme

next-csf-over-isr

CSF Over ISR とは

Client Side Fetch Over ISR の略です。

Next.js の ISR では、revalidate 期間以内の Props 更新は無視されますが、
状況によっては常に最新の Props を参照したいケースもあるかと思います。

その際に、「一度 ISR でページを描画後、クライアントサイドで再度 Props をフェッチし、再描画する」という方式を実現する HOC を提供するライブラリです。

How it works

how_it_works.png

getStaticPropsの返り値をPropsとしてページを描画後、Next.js の API route の機能を使ってgetStaticPropsをクライアントサイドから再度実行し、その返り値を新しいPropsとしてページをクライアントサイドで再描画する仕組みです。

HOC を使い、getStaticPropsで取得したPropsをインターセプトし、client side fetch を実行してページコンポーネントを描画するプロキシコンポーネントを構成します。

このライブラリは、プロキシコンポーネントを構成する HOC と、ページのgetStaticPropsを実行する API Route を自動生成する CLI から構成されています。

Requirement

  • Next.js^9.0.0
  • typescript^4.3.5

Installation

npm install next-csf-over-isr

Usage

1. ISR 対象のページコンポーネントを、CSR で再描画するように書き換える

import { GetStaticProps } from "next";
+ import { CSFOverISRPage } from "next-csf-over-isr";

export const getStaticProps = async (context) => {
  // data fetch

  return {
    props: { title: "hello world!" },
    revalidate: 6000
  }
}

type Props = {
  title: string;
}
const Page = ({title}: Props) => <div>{title}</div>

- export default Page;
+ export default CSFOverISRPage(Page);

HOC でページコンポーネントをプロキシします。

2.CSR のデータフェッチ用の API handler を生成する

npm run next-csf-over-isr posts/[slug]

CLI を利用して、対象のページのgetStaticPropsを実行する API Route を生成します。
パスとしてはpages/api/csr/${対象のページまでのパスと同じもの}.tsになります。

以上。

Note

  • NEXT_PUBLIC_IS_CSR_ENABLED環境変数を指定すると client side data fetch が有効になります。
  • CSFOverISRPageの第二引数には client side data fetch の関数を指定できますが、返り値がundefinedになった場合更新を行わないので、この関数に CSR を行うかどうかの制御を入れることが可能です。

License

"next-csf-over-isr" is under MIT license.