4466ba436b
## Description This PR ensures that the default prettier config is used for examples and templates. This config is compatible with `prettier@3` as well (upgrading prettier is bigger change that can be a future PR). ## Changes - Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will be needed upgrading to prettier@3) - Added `examples/.prettierrc.json` with default config (this will change every example) - Added `packages/create-next-app/templates/.prettierrc.json` with default config (this will change every template) ## Related - Fixes #54402 - Closes #54409
48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
import { useState } from "react";
|
|
import { Book, Review } from "../mocks/types";
|
|
|
|
type Props = {
|
|
book: Book;
|
|
};
|
|
|
|
export default function Home({ book }: Props) {
|
|
const [reviews, setReviews] = useState<Review[] | null>(null);
|
|
|
|
const handleGetReviews = () => {
|
|
// Client-side request are mocked by `mocks/browser.ts`.
|
|
fetch("/reviews")
|
|
.then((res) => res.json())
|
|
.then(setReviews);
|
|
};
|
|
|
|
return (
|
|
<div>
|
|
<img src={book.imageUrl} alt={book.title} width="250" />
|
|
<h1>{book.title}</h1>
|
|
<p>{book.description}</p>
|
|
<button onClick={handleGetReviews}>Load reviews</button>
|
|
{reviews && (
|
|
<ul>
|
|
{reviews.map((review) => (
|
|
<li key={review.id}>
|
|
<p>{review.text}</p>
|
|
<p>{review.author}</p>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export async function getServerSideProps() {
|
|
// Server-side requests are mocked by `mocks/server.ts`.
|
|
const res = await fetch("https://my.backend/book");
|
|
const book = await res.json();
|
|
|
|
return {
|
|
props: {
|
|
book,
|
|
},
|
|
};
|
|
}
|