import { Post } from "../../components/posts/post"; import { client } from "../../tina/__generated__/client"; import { useTina } from "tinacms/dist/react"; import { Layout } from "../../components/layout"; import { InferGetStaticPropsType } from "next"; // Use the props returned by get static props export default function BlogPostPage( props: InferGetStaticPropsType ) { const { data } = useTina({ query: props.query, variables: props.variables, data: props.data, }); if (data && data.post) { return ( ); } return (
No data
;
); } export const getStaticProps = async ({ params }) => { const tinaProps = await client.queries.blogPostQuery({ relativePath: `${params.filename}.mdx`, }); return { props: { ...tinaProps, }, }; }; /** * To build the blog post pages we just iterate through the list of * posts and provide their "filename" as part of the URL path * * So a blog post at "content/posts/hello.md" would * be viewable at http://localhost:3000/posts/hello */ export const getStaticPaths = async () => { const postsListData = await client.queries.postConnection(); return { paths: postsListData.data.postConnection.edges.map((post) => ({ params: { filename: post.node._sys.filename }, })), fallback: "blocking", }; }; export type PostType = InferGetStaticPropsType< typeof getStaticProps >["data"]["post"];