مقالات
الذكاء الاصطناعي

أكواد React و Next.js الأساسية 2026

مجموعة أكواد جاهزة لـReact 19 و Next.js 16: Components، Hooks، Server Actions، Data Fetching — React وNext.js يقودان تطوير الويب في 2026.

٣ سبتمبر ٢٠٢٦ 6 دقيقة قراءة

React وNext.js يقودان تطوير الويب في 2026. هذه أكواد أساسية للاثنين.

React 19 Hooks الأساسية

useState

import { useState } from "react";

function Counter() {
  const [count, setCount] = useState(0);
  
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(c => c + 1)}>+</button>
      <button onClick={() => setCount(c => c - 1)}>-</button>
    </div>
  );
}

useEffect

import { useState, useEffect } from "react";

function UserProfile({ userId }) {
  const [user, setUser] = useState(null);
  const [loading, setLoading] = useState(true);
  
  useEffect(() => {
    const controller = new AbortController();
    
    fetch(`/api/users/${userId}`, { signal: controller.signal })
      .then(r => r.json())
      .then(data => {
        setUser(data);
        setLoading(false);
      });
    
    return () => controller.abort(); // Cleanup
  }, [userId]);
  
  if (loading) return <p>جاري التحميل...</p>;
  return <div>{user.name}</div>;
}

useReducer

import { useReducer } from "react";

const initialState = { count: 0, step: 1 };

function reducer(state, action) {
  switch (action.type) {
    case "INCREMENT": return {...state, count: state.count + state.step };
    case "DECREMENT": return {...state, count: state.count - state.step };
    case "SET_STEP": return {...state, step: action.step };
    case "RESET": return initialState;
    default: return state;
  }
}

function Counter() {
  const [state, dispatch] = useReducer(reducer, initialState);
  
  return (
    <div>
      <p>Count: {state.count}, Step: {state.step}</p>
      <button onClick={() => dispatch({ type: "INCREMENT" })}>+</button>
      <button onClick={() => dispatch({ type: "DECREMENT" })}>-</button>
    </div>
  );
}

useContext

import { createContext, useContext, useState } from "react";

const ThemeContext = createContext();

export function ThemeProvider({ children }) {
  const [theme, setTheme] = useState("light");
  
  return (
    <ThemeContext.Provider value={{ theme, setTheme }}>
      {children}
    </ThemeContext.Provider>
  );
}

export function useTheme() {
  const context = useContext(ThemeContext);
  if (!context) throw new Error("useTheme must be used within ThemeProvider");
  return context;
}

// استخدام
function Header() {
  const { theme, setTheme } = useTheme();
  return (
    <button onClick={() => setTheme(t => t === "light" ? "dark": "light")}>
      {theme}
    </button>
  );
}

useMemo & useCallback

import { useMemo, useCallback, useState } from "react";

function ExpensiveList({ items, filter }) {
  // useMemo: احفظ نتيجة حساب مكلف
  const filteredItems = useMemo(() => {
    return items.filter(item => item.name.includes(filter));
  }, [items, filter]);
  
  // useCallback: احفظ الدالّة نفسها
  const handleClick = useCallback((id) => {
    console.log("Clicked:", id);
  }, []);
  
  return (
    <ul>
      {filteredItems.map(item => (
        <li key={item.id} onClick={() => handleClick(item.id)}>
          {item.name}
        </li>
      ))}
    </ul>
  );
}

Custom Hook

import { useState, useEffect } from "react";

// Hook مخصّص لـfetch
function useFetch(url) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);
  
  useEffect(() => {
    setLoading(true);
    fetch(url)
      .then(r => r.json())
      .then(setData)
      .catch(setError)
      .finally(() => setLoading(false));
  }, [url]);
  
  return { data, loading, error };
}

// استخدام
function Users() {
  const { data, loading, error } = useFetch("/api/users");
  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;
  return <ul>{data.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}

React 19 Features

useOptimistic

import { useOptimistic } from "react";

function TodoList({ todos, addTodo }) {
  const [optimisticTodos, addOptimistic] = useOptimistic(
    todos,
    (state, newTodo) => [...state, {...newTodo, sending: true }]
  );
  
  async function submit(formData) {
    const newTodo = { id: Math.random(), text: formData.get("text") };
    addOptimistic(newTodo);
    await addTodo(newTodo); // API call
  }
  
  return (
    <>
      <form action={submit}>
        <input name="text" />
        <button>Add</button>
      </form>
      <ul>
        {optimisticTodos.map(todo => (
          <li key={todo.id} style={{ opacity: todo.sending ? 0.5: 1 }}>
            {todo.text}
          </li>
        ))}
      </ul>
    </>
  );
}

use() Hook

import { use, Suspense } from "react";

function UserProfile({ userPromise }) {
  const user = use(userPromise); // ينتظر الـPromise
  return <div>{user.name}</div>;
}

// Parent
function App() {
  const userPromise = fetchUser();
  
  return (
    <Suspense fallback={<p>Loading...</p>}>
      <UserProfile userPromise={userPromise} />
    </Suspense>
  );
}

Next.js 16 (App Router)

بنية المشروع

app/
├── layout.tsx # Root layout
├── page.tsx # /
├── about/
│ └── page.tsx # /about
├── blog/
│ ├── page.tsx # /blog
│ └── [slug]/
│ └── page.tsx # /blog/:slug
├── api/
│ └── users/
│ └── route.ts # /api/users
└── globals.css

Server Component (افتراضي)

// app/users/page.tsx
export default async function UsersPage() {
  const users = await fetch("https://api.example.com/users").then(r => r.json());
  
  return (
    <div>
      <h1>المستخدمون</h1>
      <ul>
        {users.map(u => <li key={u.id}>{u.name}</li>)}
      </ul>
    </div>
  );
}

Client Component

"use client";
import { useState } from "react";

export default function Counter() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}

Route Handler (API)

// app/api/users/route.ts
import { NextRequest, NextResponse } from "next/server";

export async function GET(request: NextRequest) {
  const searchParams = request.nextUrl.searchParams;
  const country = searchParams.get("country");
  
  const users = await fetchUsers({ country });
  return NextResponse.json(users);
}

export async function POST(request: NextRequest) {
  const body = await request.json();
  const user = await createUser(body);
  return NextResponse.json(user, { status: 201 });
}

Dynamic Routes

// app/blog/[slug]/page.tsx
export default async function BlogPost({ 
  params 
}: { 
  params: Promise<{ slug: string }> 
}) {
  const { slug } = await params;
  const post = await getPost(slug);
  
  return (
    <article>
      <h1>{post.title}</h1>
      <div>{post.content}</div>
    </article>
  );
}

// SSG
export async function generateStaticParams() {
  const posts = await getAllPosts();
  return posts.map(p => ({ slug: p.slug }));
}

// Metadata
export async function generateMetadata({ params }) {
  const post = await getPost((await params).slug);
  return {
    title: post.title,
    description: post.description
  };
}

Server Actions

// app/actions.ts
"use server";

export async function createTodo(formData: FormData) {
  const text = formData.get("text");
  await db.todo.create({ data: { text } });
  revalidatePath("/todos");
}

// app/todos/page.tsx
import { createTodo } from "@/app/actions";

export default function TodosPage() {
  return (
    <form action={createTodo}>
      <input name="text" />
      <button>Add</button>
    </form>
  );
}

Layout

// app/layout.tsx
export default function RootLayout({ children }) {
  return (
    <html lang="ar" dir="rtl">
      <body>
        <nav>...</nav>
        {children}
        <footer>...</footer>
      </body>
    </html>
  );
}

Loading & Error

// app/users/loading.tsx
export default function Loading() {
  return <p>جاري التحميل...</p>;
}

// app/users/error.tsx
"use client";
export default function Error({ error, reset }) {
  return (
    <div>
      <h2>حدث خطأ!</h2>
      <button onClick={reset}>حاول مجدّداً</button>
    </div>
  );
}

نصائح ذهبية

  1. Server Components افتراضياً، لا تضف use client إلا للحاجة
  2. Fetch في Server Components، بلا useEffect
  3. TypeScript دائماً للمشاريع الجادّة
  4. App Router بدل Pages، الحديث والأفضل
  5. Server Actions للـForms، تجنّب API routes لكل شيء
  6. Image من next/image، تحسين تلقائي

المصادر الرسمية


اقرأ أيضاً: أكواد JavaScript الأساسية · أكواد HTML و CSS · أكواد أتمتة يومية · أفضل ١٠ أكواد Python

الأسئلة الشائعة

لأغلب التطبيقات: لا. React Context + useReducer كافيان. Zustand أو Jotai بدائل خفيفة. Redux للتطبيقات الكبيرة جدّاً بحالات معقّدة.

Server افتراضياً في Next.js App Router. استخدم Client (`use client`) فقط للتفاعل (state، events، browser APIs). Server أفضل للأداء والـSEO.

ضمن سلسلة: أكواد وأتمتة جاهزة

المقال 3 من 9

مقاطع كود جاهزة: بايثون، جافاسكربت، React، SQL، Git، وأتمتة المهام اليومية.

  1. 1.أفضل 10 أكواد Python يبحث عنها المطوّرونالدليل الشامل
  2. 2.أفضل أكواد JavaScript يبحث عنها المطوّرون
  3. 3.أكواد React و Next.js الأساسية 2026
  4. 4.أكواد HTML و CSS الأساسية، مكتبة المطوّر
  5. 5.أكواد SQL جاهزة، أشهر 20 استعلاماً يبحث عنها المطوّر
  6. 6.أكواد Git الأساسية، أوامر كل مطوّر يحتاجها
  7. 7.أكواد Bash و PowerShell، أتمتة سطر الأوامر
  8. 8.أكواد Excel و Google Sheets، أتمتة البيانات
  9. 9.أكواد أتمتة يومية، ادخل عصر الـAutomation

مقالات ذات صلة

الذكاء الاصطناعي

الذكاء الاصطناعي في الصحّة النفسية، بحذر شديد

دليل صريح لدور AI في الصحّة النفسية: Woebot، Wysa، الأدوات المفيدة، ومتى AI خطر، مع تحذير YMYL صارم — تسجيل يومي لمزاجك، AI يكشف أنماطاً:

4 سبتمبر 2026 7 د
الذكاء الاصطناعي

Llama و Mistral و DeepSeek، عالم AI المفتوح 2026

دليل للنماذج المفتوحة الرائدة: Meta Llama، Mistral، DeepSeek، Qwen، Falcon، متى وكيف تستخدمها — الخصوصية: بياناتك لا تخرج جهازك 2.

4 سبتمبر 2026 7 د
الذكاء الاصطناعي

البرومت العربي vs الإنجليزي، الفرق والاستراتيجية

متى تكتب البرومت بالعربية ومتى بالإنجليزية للحصول على أفضل مخرج من ChatGPT وClaude وGemini — النموذج الواحد يفهم عشرات اللغات، لكن أداءه يختلف بينها.

3 سبتمبر 2026 5 د
السفر والسياحة

دليل السفر إلى لندن من السعودية ٢٠٢٦، أفضل وقت والفيزا الإلكترونية

متى تزور لندن، تصريح السفر الإلكتروني (ETA) الجديد للسعودي، وأبرز معالمها — دليل عملي بجداول طقس حقيقية وروابط طيران وفنادق.

17 سبتمبر 2026 4 د
الخدمات الحكومية السعودية

الحقوق القانونية للمرأة السعودية ٢٠٢٦: الدليل النظامي الشامل

دليل مرجعي للحقوق القانونية للمرأة السعودية بحسب الأنظمة السعودية النافذة — الهوية، السفر، العمل، الأحوال الشخصية، الملكية، والتقاضي.

12 سبتمبر 2026 6 د
التقويم والمناسبات

حاسبة الزكاة، احسب زكاة مالك وذهبك بدقّة شرعية

أداة تفاعلية لحساب زكاة النقود، الذهب، الفضة، وعروض التجارة. مع شرح تفصيلي للنصاب، الحول، النسبة، والحالات الخاصة — الزكاة ركن من أركان الإسلام، وحسابها…

29 أغسطس 2026 4 د

هل أفادك هذا المقال؟