Files
StevenandGitHub 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

69 lines
1.9 KiB
TypeScript

import { useState } from "react";
import Header from "../components/Header";
import dynamic from "next/dynamic";
const DynamicComponent1 = dynamic(() => import("../components/hello1"));
const DynamicComponent2WithCustomLoading = dynamic(
() => import("../components/hello2"),
{ loading: () => <p>Loading caused by client page transition ...</p> },
);
const DynamicComponent3WithNoSSR = dynamic(
() => import("../components/hello3"),
{ loading: () => <p>Loading ...</p>, ssr: false },
);
const DynamicComponent4 = dynamic(() => import("../components/hello4"));
const DynamicComponent5 = dynamic(() => import("../components/hello5"));
const names = ["Tim", "Joe", "Bel", "Max", "Lee"];
const IndexPage = () => {
const [showMore, setShowMore] = useState(false);
const [falsyField] = useState(false);
const [results, setResults] = useState();
return (
<div>
<Header />
{/* Load immediately, but in a separate bundle */}
<DynamicComponent1 />
{/* Show a progress indicator while loading */}
<DynamicComponent2WithCustomLoading />
{/* Load only on the client side */}
<DynamicComponent3WithNoSSR />
{/* This component will never be loaded */}
{falsyField && <DynamicComponent4 />}
{/* Load on demand */}
{showMore && <DynamicComponent5 />}
<button onClick={() => setShowMore(!showMore)}>Toggle Show More</button>
{/* Load library on demand */}
<div style={{ marginTop: "1rem" }}>
<input
type="text"
placeholder="Search"
onChange={async (e) => {
const { value } = e.currentTarget;
// Dynamically load fuse.js
const Fuse = (await import("fuse.js")).default;
const fuse = new Fuse(names);
setResults(fuse.search(value));
}}
/>
<pre>Results: {JSON.stringify(results, null, 2)}</pre>
</div>
</div>
);
};
export default IndexPage;