קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ fullstack ♦ nextJS – קורס fullstack – פונקציות והוקים ב nextjs

nextJS – קורס fullstack – פונקציות והוקים ב nextjs

וינר יאיר 6 בינואר 2024 אין תגובות

ברוכים הבאים לפוסט נוסף כחלק מקורס fullstack עם nextjs. והפעם נדבר על hooks של נקסט ונציג שימושים בהם, כמו כן לא נסקור את כל ההוקים שnextjs מציעים, אלא רק את הפופולאריים ומי שירצה יוכל להמשיך לתוך הדוקומנטציה של נקסט ולחפור הוקים נוספים,

Nextjs Hooks – לא רק עם use client

נכון שעוד לא דיברנו על use client / use server וכן אני ארשום על זה בפוסט הבא בפירוט מלא, ובכל זאת אסביר כמה דברים בנושא כי לא כל רכיב של נקסט יכול לעשות שימוש בhooks. לכן אם תרצו לעשות שימוש בuseParams ככל הנראה תקבלו שגיאה מוכרת של nextjs compiler שאתם צריכים להגדיר את הרכיב כ CSR כלומר client side rendering וכן ניחשתם נכון, הרכיבים של נקסט כברירת מחדל הם SSR – server side rendering. אבל אם רוצים להשתמש בפונקציות מסוימות ברכיבים מרונדרים צד שרת? גם לזה יש פתרון ונציג אותו בהמשך הפוסט.

להלן דוגמה של ההוקים שנסקור בפוסט ברכיבים שהם use client , ושימו לב שיש שבשורה 1 הגדרנו לקומפיילר של נקסט שהרכיב הוא אכן use client:

"use client";

import qs from "query-string";
import { useState } from "react";
import { useRouter } from "next/navigation";

export const Search = () => {
    const router = useRouter();
    const [value, setValue] = useState("");

    const onSubmit = (e: React.FormEvent<HTMLFormElement>) => {
        e.preventDefault();

        if (!value) return;

        const url = qs.stringifyUrl(
          {
                url: "/",
                query: { search: value },
            },
            { skipEmptyString: true }
        );

        router.push(url);
    };

    return (
       <div>
         <form onSubmit={onSubmit}>
            <Input
                value={value}
                onChange={(e) => setValue(e.target.value)}
                placeholder="Search"
            />
            <button type="submit">Search</button>
        </form>
        <div>
          <span>search for: {search}</span>
        </div>
        </div>
      
    );
};

useRouter

ככל הנראה את useRouter אתם מכירים מתוך ריאקט, אבל שימו לב שזה לא הוק של ריאקט אלא של next/navigation. מכוון שנקסט עשו מימוש שונה לראוטר של ריאקט אז גם שכתבו את ההוקים של הנביגציה של ריאקט. כמו כן תגית Link כפי שראינו בפוסט הקודם nextJS – קורס fullstack – רכיבים של nextjs

useParams

הוק זה והוקים נוספים בנושא של פרמטרים וראוטים יגיעו מ next/navigation ויעזרו לכם להתמודד עם קבלת מידע וניתוב בין הנתיבים השונים באפליקציה שלכם.

פונקציות של nextjs בצד שרת – use server

מה עושים עם רוצים מידע על נתיבים שמתרנדרים בצד השרת ? גם לזה יש פתרונות. למשל אם תרצו לנתב משתמשים תוכלו להשתמש ב redirect שגם הוא מגיע אלינו מ next/navigation

למשל תוכלו לראות בדוגמה הבאה שימוש ב redirect בעמוד layout.tsx שהוא משחק כ use server (לא חייב לרשום את ההגדרה כי בנקסט use server הוא ברירת המחדל). כמו כן redirect זמין גם עבור רכיבים שהם use client אם כי יותר נפוץ ברכיבי צד שרת ושימוש של רידיירקט עושים ב router.push('/')

import { redirect } from "next/navigation";

import { getUserByUsername } from "@/lib/auth-service";

import { Navbar } from "./_components/navbar";

interface DashboardLayoutProps {
    params: { username: string };
    children: React.ReactNode;
}

const DashboardLayout = async ({ params, children }: DashboardLayoutProps) => {
    const user = await getUserByUsername(params.username);

    if (!user) {
        redirect("/");
    }

    return (
        <>
            <Navbar /> 
            <Container>{children}</Container>
        </>
    );
};

export default DashboardLayout;

פונקציות נוספות של nextjs עבור רכיבי צד שרת, תוכלו למצוא כשימושיים הן:

  • cookies
  • headers
  • revalidatePath
  • notFound

פונקציות אלו שימושיות ונמצאות כמעט בכל פרויקט.

notFound

מאפשר לכם לרנדר רביב של notFound מצד שרת

import { notFound } from 'next/navigation'
 
async function fetchUser(id) {
  const res = await fetch('https://...')
  if (!res.ok) return undefined
  return res.json()
}
 
export default async function Profile({ params }) {
  const user = await fetchUser(params.id)
 
  if (!user) {
    notFound()
  }
 
  // ...
}

revalidatePath

אחד החשובים במידה ותרצו לייצר רנדור נוסף עבור נתיבים ספציפיים מצד שרת. נפוץ גם מתוך actions וגם מתוך קבצי route.ts. זאת מכוון שכל קובץ שנוצר מהשרת עם נקסט, נשמר הקאש של המידע, מה שיכול לגרום למידע לא להתעדכן בזמן. מלבד revalidatePath ישנם פתרונות נוספים לבצע revalidate עם נקסט וכן יוזכר לפרטים בהמשך.

import { revalidatePath } from 'next/cache'
import { NextRequest } from 'next/server'
 
export async function GET(request: NextRequest) {
  const path = request.nextUrl.searchParams.get('path')
 
  if (path) {
    revalidatePath(path)
    return Response.json({ revalidated: true, now: Date.now() })
  }
 
  return Response.json({
    revalidated: false,
    now: Date.now(),
    message: 'Missing path to revalidate',
  })
}

headers

יאפשר לכם לקרוא מידע המגיע מההדאר של העמוד גם מרכיבי SSR .

import { headers } from 'next/headers'
 
export default function Page() {
  const headersList = headers()
  const referer = headersList.get('referer')
 
  return <div>Referer: {referer}</div>
}

cookies

תוכלו לקרוא קוקיס דרך קבצי SSR וגם תוכלו לכתוב בקבצים המוגדרים כ actions או route

import { cookies } from 'next/headers'
 
export default function Page() {
  const cookieStore = cookies()
  return cookieStore.getAll().map((cookie) => (
    <div key={cookie.name}>
      <p>Name: {cookie.name}</p>
      <p>Value: {cookie.value}</p>
    </div>
  ))
}
'use server'
 
import { cookies } from 'next/headers'
 
async function create(data) {
  cookies().set('name', 'lee')
  // or
  cookies().set('name', 'lee', { secure: true })
  // or
  cookies().set({
    name: 'name',
    value: 'lee',
    httpOnly: true,
    path: '/',
  })
}

לסיכום קורס fullstack – פונקציות והוקים ב nextjs

אז כפי שכבר ציינתי בפוסטים קודמים, nextjs עושה צעדים חדשים מידי יום ומומלץ להתעדכן בחדשות שלהם בערוצים השונים שהם מציעים, כמו כן הצגתי בפוסט מספר מצומצם של פונקציות שתוכלו לעבוד איתם, וככל הנראה יהיו שימושיות לכם כמעט בכל פרויקט, וכן ישנן עוד פונקציות נוספות אך אולי פחות שימושיות, ובכל זאת כדאי להכיר.

תוכלו לייצר גם פונקציות משלכם כמובן לשימוש נרחב בכל הרכיבים שלכם, בין אם הם רכיבי SSR או CSR. וכן בהמשך הקורס נבנה גם הוקים ופונקציות ייחודיים ונראה כיצד להשתמש בהן (יותר לקראת סיום הקורס – יהיה מיני פרויקט). בפוסט הבא נדבר על use client ו use server ואיך עובדים נכון ומתכננים נכון רכיבים אלו וכמובן מה קורה לרכיב שהוא CSR שמכיל רכיבים שהם SSR. יהיה מעניין, ממליץ להמשיך לעקוב 🤓🐊.

פוסטים קשורים:

קורס fullstack עם nextjsnextJS – קורס fullstack – רכיבים של nextjs nextJS – קורס fullstack – איך מתחילים nextJS – קורס fullstack – עמודים ותבניות של nextJs מדריך ריאקט שיעור useContextמדריך ריאקט – react hooks | useContext
fullstack next js nextjs מדריך nextjs מדריך ריאקט קורס fullstack קורס nextjs

אודות המחבר

יאיר וינר להציג את כל הפוסטים של וינר יאיר


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד