Nozik jihatlar (Nuances)

Server komponentlari faqat serverda, klient komponentlari esa faqat klientda bajariladi, degan umumiy noto’g’ri tushuncha mavjud. Bu haqiqatga to’g’ri kelmaydi. Server komponentlari faqat serverda bajariladi va React elementlarini ifodalovchi obyektlarni ifoda etadi, lekin klient komponentlari faqat klientda bajarilmaydi.

”Komponentlar bajarilishi” deganda nima nazarda tutiladi?

Buni chuqurroq tushunishimiz uchun kelin, “Komponentlar bajarilishi”, ya’ni components execute deganda nimani anglatishini muhokama qilaylik. “Komponentlar bajarilishi” deganda biz komponentni ifodalovchi funksiya chaqirilishini nazarda tutamiz. Masalan, bizda ushbu komponent bor deylik:

function MyComponent() {
  return <div>hello world</div>;
}

MyComponent bajarilishi” deganda, biz MyComponent funksiyasi uning props’lari bilan chaqirilishi va React elementini qaytarishini nazarda tutamiz—bu oddiy JavaScript obyekti bo’lib, quyidagi ko’rinishga ega:

{
  $$typeof: Symbol(react.element),
  type: "div",
  props: {
    children: "hello world"
  }
}

Bu “komponentlar bajarilishi” deganda nimani nazarda tutayotganimizdir.

Serverda klient komponentlarining bajarilishi

Server rendering paytida klient komponentlari serverda bajariladi va React elementlarini ifodalovchi obyektlarni chiqaradi. Bu elementlar keyinchalik HTML satriga seriyalashtiriladi va klientga jo’natiladi, bu yerda brauzer HTML markup’ini render qiladi. Shunday qilib, klient komponentlari ham serverda bajariladi, React elementlarini ifodalovchi ba’zi obyektlarni qaytaradi, va keyin server ularni HTML’ga seriyalashtiradi va klientga yuboradi.

To’g’ri bayonotlar

Buni aniqroq tasavvur qilish uchun biz quyidagi to’g’ri bayonotlarni keltirishimiz mumkin:

  1. Server komponentlari serverda bajariladi, React elementlarini ifodalovchi obyektlarni chiqaradi.
  2. Klient komponentlari serverda bajariladi, React elementlarini ifodalovchi obyektlarni chiqaradi.
  3. Serverda klient va server komponentlarining barcha React elementlarini ifodalovchi katta obyekt mavjud.
  4. Bu satr(string)ga aylantiriladi va klientga yuboriladi.
  5. Ushbu nuqtadan boshlab, server komponentlari klientda hech qachon bajarilmaydi.
  6. Klient komponentlari faqat klientda bajariladi.

Bu nuqtai nazar bilan, server va klient komponentlarining bajarilish chegaralari yanada aniqroq bo’ladi. Biz bu yerda nozik masalalarni muhokama qilayotgan bo’lishimiz mumkin, lekin ikkita komponent turining o’zaro ta’sirini to’liq tushunish va qadrlash uchun qo’shimcha tafsilotlarni qo’shish muhimdir.