rsnext/examples/with-msw/pages/index.tsx
Steven 4466ba436b
chore(examples): use default prettier for examples/templates (#60530)
## 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
2024-01-11 16:01:44 -07:00

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,
},
};
}