mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
## 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
69 lines
1.9 KiB
TypeScript
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;
|