Next.js
Getting Started
npx create-next-app@latest
Use the command above to create a new Next.js application. All of the code you will write will be in the main app/ folder.
Key components and functions startercode
-
Link:
Linkis a component provided by Next.js that enables client-side navigation between different pages of your application. It allows you to navigate between pages without causing a full page reload, which results in a faster and smoother user experience.- Example:
import Link from 'next/link';
function Home() {
return (
<div>
<h1>Welcome to the homepage</h1>
<Link href="/about">
<a>Go to About Page</a>
</Link>
</div>
);
}
-
usePathname():
usePathnameis a hook provided by Next.js to get the current pathname in a functional component. This can be useful for conditionally rendering content based on the current route.- Example:
import { usePathname } from 'next/navigation';
function MyComponent() {
const pathname = usePathname();
return (
<div>
<p>Current pathname: {pathname}</p>
</div>
);
}
-
clsx:
clsxis a utility for constructingclassNamestrings conditionally. It helps in managing classes more dynamically and concisely, often used in conjunction with CSS modules or Tailwind CSS in Next.js projects.- Example:
import clsx from 'clsx';
function Button({ isPrimary }) {
return (
<button className={clsx('btn', { 'btn-primary': isPrimary, 'btn-secondary': !isPrimary })}>
Click me
</button>
);
}
Question: Implementing Dark Mode Based on Pathname
-
Objective: Apply dark mode styles when the user navigates to a specific pathname, e.g.,
/dark-mode. -
Steps:
- Use
Linkto navigate to the/dark-modepage. - Use
usePathnameto get the current pathname. - Use
clsxto conditionally apply dark mode styles based on the pathname.
- Use
-
Code Example:
Question: Implement Dark Mode Based on Pathname
Objective
Create two buttons, one that navigates to the /dark-mode page and the /light-mode page
Create a dark mode that activates when the user navigates to the /dark-mode page.
Create a light mode that activates when the user navigates to the /dark-mode page.
The buttons must include Dark-Mode and Light-Mode in them.
Starter Code
Complete the Home function in the provided starter code to achieve this functionality.
// styles/globals.css
.container {
padding: 20px;
transition: background-color 0.3s ease;
}
.dark-mode {
background-color: #333;
color: #fff;
}
// app/page.js
import Link from 'next/link';
import { usePathname } from 'next/navigation';
import clsx from 'clsx';
// HINT: Use the `usePathname` hook to get the current pathname.
// HINT: Use the `clsx` utility to conditionally apply the 'dark-mode' class.
// HINT: There should also be two new pages we are redirecting to. Think about how we make more pages within Next.js.
function Home() {
// Your code here
}
export default Home;