- Next.js
- Storybook
- Redux Toolkit
- RTK Query
export const getServerSideProps: GetServerSideProps =
wrapper.getServerSideProps((store) => async (context) => {
store.dispatch(api.endpoints.getArticles.initiate({}));
await Promise.all(api.util.getRunningOperationPromises());
return {
props: {},
};
});
export const getStaticPaths: GetStaticPaths = async () => {
const store = createStore();
const result = await store.dispatch(api.endpoints.getArticles.initiate({}));
return {
paths:
result.data?.articles.map((article) => `/posts/${article.slug}`) ?? [],
fallback: true,
};
};
interface Params extends ParsedUrlQuery {
slug: string;
}
export const getStaticProps = wrapper.getStaticProps(
(store) => async (context) => {
const { slug } = context.params as Params;
const result = store.dispatch(api.endpoints.getArticle.initiate({ slug }));
await Promise.all(api.util.getRunningOperationPromises());
const { data } = await result;
if (!data) {
return {
notFound: true,
};
}
return {
props: {},
revalidate: 60,
};
}
);