โš›๏ธ
Veb-sayt

React 19 yangiliklari: zamonaviy frontend imkoniyatlari va amaliy migratsiya

30.09.2025
โ† Barcha maqolalar

React 19 frontend dasturchilar uchun bir necha yildan beri kutilgan eng katta yangilanishlardan biri bo'ldi. Bu versiya nafaqat yangi imkoniyatlar qo'shadi, balki ko'p yillar davomida dasturchilar yozib kelgan takrorlanuvchi kodning katta qismini yo'qotadi. Form holatini boshqarish, asinxron operatsiyalar, ma'lumotlarni o'qish va hatto sahifa metama'lumotlarini boshqarish endi ancha tabiiy va kam kod bilan amalga oshiriladi. Ushbu maqolada React 19 ning eng muhim barqaror funksiyalarini real amaliy misollar bilan ko'rib chiqamiz va loyihangizni yangilashga arziydimi degan savolga javob beramiz.

Actions: form va asinxron holatni boshqarishning yangi usuli

React 19 da eng katta o'zgarishlardan biri Actions tushunchasidir. Ilgari form yuborilganda yuklanish holatini, xatolarni va optimistik yangilanishlarni qo'lda boshqarish kerak edi. Buning uchun bir nechta useState chaqiruvi, try-catch bloklari va qo'lda holat o'zgartirishlar yozilardi. React 19 esa bu jarayonni useActionState hooki orqali soddalashtiradi va asinxron funksiya bevosita formaga ulanadi.

import { useActionState } from "react";

function UpdateName() {
  const [error, submitAction, isPending] = useActionState(
    async (previousState, formData) => {
      const name = formData.get("name");
      const result = await updateName(name);
      if (result.error) return result.error;
      redirect("/profile");
      return null;
    },
    null
  );

  return (
    <form action={submitAction}>
      <input name="name" />
      <button disabled={isPending}>Saqlash</button>
      {error && <p>{error}</p>}
    </form>
  );
}

Bu yondashuvning afzalligi shundaki, isPending holati avtomatik boshqariladi va siz uni qo'lda o'rnatishingiz shart emas. Forma yuborilayotganda tugma o'zi bloklanadi, javob kelganda esa qayta faollashadi. Eski usulda bu mantiqni har bir formada qaytadan yozish kerak edi, endi esa React buni o'z zimmasiga oladi. Bu ayniqsa ko'p formali ilovalarda kod miqdorini sezilarli kamaytiradi.

useOptimistic: optimistik yangilanishlar oson bo'ldi

Zamonaviy interfeyslarda foydalanuvchi biror amal qilganda natijani darhol ko'rish kutiladi, garchi server javobi hali kelmagan bo'lsa ham. Bu optimistik yangilanish deb ataladi va ilgari uni amalga oshirish ancha murakkab edi. React 19 da useOptimistic hooki bu vazifani juda soddalashtiradi va xato yuz berganda avtomatik ravishda oldingi holatga qaytaradi.

import { useOptimistic } from "react";

function Thread({ messages, sendMessage }) {
  const [optimisticMessages, addOptimistic] = useOptimistic(
    messages,
    (state, newMessage) => [...state, { text: newMessage, sending: true }]
  );

  async function formAction(formData) {
    const text = formData.get("message");
    addOptimistic(text);
    await sendMessage(text);
  }

  return (
    <form action={formAction}>
      {optimisticMessages.map((m, i) => (
        <div key={i}>{m.text} {m.sending && "(yuborilmoqda...)"}</div>
      ))}
      <input name="message" />
    </form>
  );
}

Bu yerda xabar serverga yetib borishini kutmasdan darhol ekranda ko'rinadi va "yuborilmoqda" belgisi bilan ko'rsatiladi. Agar serverda xatolik yuz bersa, React optimistik holatni avtomatik bekor qiladi va asl ma'lumotlarni qaytaradi. Bunday tajriba chat ilovalari, izohlar va layklar kabi tezkor javob talab qiladigan joylarda foydalanuvchiga ancha sezgir va jonli interfeys taqdim etadi.

use() hook: ma'lumotlar va kontekstni o'qishning moslashuvchan usuli

React 19 use nomli yangi API ni taqdim etadi. Bu oddiy hookdan farqli ravishda shartli ravishda, masalan if blokining ichida ham chaqirilishi mumkin. use Promise ni qabul qilib, uning natijasini Suspense bilan birga o'qiy oladi yoki kontekst qiymatini olishda useContext o'rnida ishlatilishi mumkin.

import { use, Suspense } from "react";

function Comments({ commentsPromise }) {
  const comments = use(commentsPromise);
  return comments.map((c) => <p key={c.id}>{c.text}</p>);
}

function Page({ commentsPromise }) {
  return (
    <Suspense fallback={<p>Yuklanmoqda...</p>}>
      <Comments commentsPromise={commentsPromise} />
    </Suspense>
  );
}

Eski usulda ma'lumotlarni yuklash uchun useEffect ichida fetch chaqirib, natijani useState ga saqlash kerak edi, bu esa ortiqcha render va murakkab holat boshqaruviga olib kelardi. use bilan esa Promise to'g'ridan-to'g'ri o'qiladi va Suspense yuklanish holatini avtomatik boshqaradi. Shu bilan birga, use ni useContext o'rnida ishlatish kontekstni shartli ravishda o'qish imkonini beradi, bu esa ilgari mumkin emas edi.

ref prop sifatida: forwardRef endi kerak emas

Ko'p yillar davomida boshqa komponentga ref uzatish uchun forwardRef bilan o'rab olish kerak edi. Bu qo'shimcha boilerplate kod yaratardi va ba'zan chalkashlikka sabab bo'lardi. React 19 da funksional komponentlar ref ni oddiy prop sifatida qabul qila oladi, bu esa kodni ancha tozalaydi.

function MyInput({ placeholder, ref }) {
  return <input placeholder={placeholder} ref={ref} />;
}

// Foydalanish:
function Form() {
  const inputRef = useRef(null);
  return <MyInput placeholder="Ism" ref={inputRef} />;
}

Endi siz forwardRef ni butunlay tashlab, ref ni boshqa proplar qatorida e'lon qilishingiz mumkin. Bu o'zgarish ayniqsa katta komponent kutubxonalarida juda foydali, chunki har bir qayta ishlatiluvchi komponentni ortiqcha o'rashdan xalos qiladi. Eski forwardRef kodi hali ishlaydi, lekin yangi loyihalarda to'g'ridan-to'g'ri prop yondashuvini ishlatish tavsiya etiladi va kelajakda eski API asta-sekin iste'foga chiqariladi.

Document metadata: title va meta teglarni komponentdan boshqarish

SEO uchun sahifa sarlavhasi va meta teglari muhim, lekin ilgari ularni boshqarish uchun react-helmet kabi tashqi kutubxonalar kerak edi. React 19 da siz <title>, <meta> va <link> teglarini to'g'ridan-to'g'ri komponent ichida yozishingiz mumkin va React ularni avtomatik ravishda hujjatning <head> qismiga ko'taradi.

function BlogPost({ post }) {
  return (
    <article>
      <title>{post.title} โ€” sayt.uz blog</title>
      <meta name="description" content={post.excerpt} />
      <meta property="og:title" content={post.title} />
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </article>
  );
}

Bu yondashuv metama'lumotlarni ular tegishli bo'lgan komponent yonida saqlash imkonini beradi, bu esa kodni mantiqiy va tushunarli qiladi. Server Components bilan birga ishlatilganda bu funksiya server tomonidan render qilingan HTML ga to'g'ri meta teglarni qo'shadi, bu esa qidiruv tizimlari uchun juda muhim. Endi ko'p hollarda tashqi kutubxonaga ehtiyoj qolmaydi va metama'lumotlar boshqaruvi tabiiy React qismiga aylanadi.

Server Components va yaxshilangan hydration

React 19 Server Components ni barqaror funksiya sifatida taqdim etadi. Bu komponentlar serverda render qilinadi va mijozga tayyor HTML yuboriladi, bu esa boshlang'ich yuklanishni tezlashtiradi va JavaScript hajmini kamaytiradi. Server Components ma'lumotlar bazasiga to'g'ridan-to'g'ri murojaat qila oladi va mijozga faqat zarur ma'lumotni yuboradi.

Bundan tashqari, React 19 hydration jarayonini sezilarli yaxshiladi. Hydration server render qilgan HTML ga interaktivlik qo'shish jarayonidir va ilgari u xatolar yuz berganda butun sahifani buzishi mumkin edi. Yangi versiyada hydration xatolari ancha aniqroq xabar beradi va React ba'zi nomuvofiqliklarni avtomatik tiklay oladi. Bu, ayniqsa, server va mijoz tomonidagi kontent biroz farq qilganda ilovaning barqarorligini oshiradi.

Yangilashga arziydimi va migratsiya

React 19 ga o'tish ko'pchilik loyihalar uchun nisbatan silliq kechadi, chunki jamoa ko'p o'zgarishlarni orqaga moslashuvchan qildi. Migratsiyani boshlashdan oldin avval React 18.3 versiyasiga yangilash tavsiya etiladi, chunki u 19 dagi eskirgan funksiyalar haqida ogohlantirishlar beradi. So'ng react-codemod vositasi yordamida avtomatik o'zgartirishlarni qo'llashingiz mumkin, bu esa qo'lda ishni kamaytiradi.

Agar sizning loyihangiz formalar, asinxron operatsiyalar va SEO bilan faol ishlaydigan bo'lsa, React 19 ga o'tish sezilarli foyda keltiradi va kod miqdorini kamaytiradi. Kichik va barqaror ishlaydigan loyihalar uchun esa shoshilish shart emas, lekin yangi funksiyalar uzoq muddatda ishlab chiqishni ancha qulaylashtiradi. Umuman olganda, React 19 zamonaviy frontend ishlab chiqishni soddalashtiradigan va dasturchilar tajribasini yaxshilaydigan jiddiy qadam bo'ldi, shuning uchun yangi loyihalarni undan boshlash mantiqan to'g'ri.

O'xshash maqolalar

๐ŸŒพ Qishloq xo'jaligi va agrobiznes sayti: mahsulotlar katalogi va B2B sotuv โค๏ธ Xayriya fondi sayti: shaffof xayriya yig'ish va donator ishonchi ๐ŸŽ‰ Toyxona va banket zali sayti: tadbir tashkil qilish va onlayn bron qilish ๐Ÿš™ Avtoulov ijarasi sayti: avtomobil katalog, narx kalkulyatori va onlayn bron
๐ŸŒ Til
๐Ÿ‡บ๐Ÿ‡ฟ O'zbek โœ“ ๐Ÿ‡บ๐Ÿ‡ฟ ะŽะทะฑะตะบ ๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน ๐Ÿ‡ฌ๐Ÿ‡ง English