Course Content
Next.js 14 Mastery for Building Modern Web Apps
Next.js 14 Mastery for Building Modern Web Apps
1. Introduction to Next.js
2. Setting Up a Next.js Project
Setting Up the Next.js Project Understanding the Project File and Folder StructureStyling Approaches in Next.jsAdding the Global CSS FileUsing Tailwind CSS for StylingWorking with CSS ModulesApplying Styles ConditionallyAdding Custom Google FontsChallenge: Implementing a Custom Google FontHandling Images in Next.js
3. Building Pages and Layouts in Next.js
4. Deploying a Next.js App and Setting Up a Database
5. Fetching and Displaying Data in Next.js
6. Advanced Next.js Features and Optimizations
7. Implementing Authentication in Next.js
Understanding AuthenticationSetting Up the Login RouteUsing NextAuth.js for AuthenticationConfiguring Authentication and Protecting RoutesHashing Passwords and Managing CredentialsImplementing Sign-In FunctionalityConnecting the UI with Authentication LogicImplementing Logout FunctionalityFinal Thoughts and Next Steps
Optimizing Loaders with Component Grouping
What about the Card
components, should we add the laoder for each card or how to handle this component.
When fetching data for individual <Card>
components, a potential issue arises - loading each card separately may cause a popping effect as they load in. This sudden visual change can be jarring for users.
To mitigate this problem, consider the following steps in the page.tsx
file.
Back to the Project
- Delete the
<Card>
components; - Delete the
fetchCardData()
function; - Import a new wrapper component called
<CardWrapper />
; - Import a new skeleton component called
<CardsSkeleton />
; - Wrap
<CardWrapper />
inSuspense
.
- Navigate to
app/ui/dashboard/cards.tsx
; - Import
fetchCardData()
; - Invoke
fetchCardData()
inside the<CardWrapper/>
component; - Uncomment necessary code.
In Practice
Everything was clear?
Thanks for your feedback!
Section 5. Chapter 8