Lietuvių

Susipažinkite su „React Server Context“ – novatoriška funkcija, skirta efektyviam serverio būsenos valdymui. Sužinokite, kaip ji pagerina našumą, SEO ir supaprastina architektūras.

„React Server Context“: išsami serverio būsenos dalijimosi apžvalga

„React Server Components“ (RSC) sukėlė paradigmos pokytį kuriant „React“ programas, ištrindami ribas tarp serverio ir kliento. Šios naujos paradigmos centre yra „React Server Context“ – galingas mechanizmas, leidžiantis sklandžiai dalytis būsena ir duomenimis serveryje. Šiame straipsnyje pateikiama išsami „React Server Context“ apžvalga, jo privalumai, naudojimo atvejai ir praktinis įgyvendinimas.

Kas yra „React Server Context“?

„React Server Context“ – tai funkcija, leidžianti dalytis būsena ir duomenimis tarp „React Server Components“, veikiančių serveryje atvaizdavimo proceso metu. Ji analogiška gerai žinomam React.Context, naudojamam kliento pusės „React“, tačiau su esminiu skirtumu: ji veikia išskirtinai serveryje.

Įsivaizduokite tai kaip globalią, serverio pusės saugyklą, kurią komponentai gali pasiekti ir modifikuoti pradinio atvaizdavimo metu. Tai leidžia efektyviai gauti duomenis, atlikti autentifikaciją ir kitas serverio operacijas be sudėtingo „prop drilling“ ar išorinių būsenos valdymo bibliotekų.

Kodėl verta naudoti „React Server Context“?

„React Server Context“ siūlo keletą įtikinamų pranašumų, palyginti su tradiciniais serverio duomenų tvarkymo metodais:

Pagrindinės sąvokos ir terminologija

Prieš pradedant diegimą, apibrėžkime keletą pagrindinių sąvokų:

„React Server Context“ įgyvendinimas

Pateikiame nuoseklų vadovą, kaip įdiegti „React Server Context“ jūsų programoje:

1. Sukurkite kontekstą

Pirma, sukurkite naują kontekstą naudodami React.createContext:

// app/context/AuthContext.js
import { createContext } from 'react';

const AuthContext = createContext(null);

export default AuthContext;

2. Sukurkite konteksto teikėją

Toliau sukurkite konteksto teikėjo komponentą, kuris apgaubia jūsų programos dalį, kurioje norite dalytis serverio būsena. Šis teikėjas gaus pradinius duomenis ir padarys juos prieinamus savo paveldėtojams.

// app/providers/AuthProvider.js
'use client';

import { useState, useEffect } from 'react';
import AuthContext from '../context/AuthContext';

async function fetchUser() {
  // Imituojame vartotojo duomenų gavimą iš API ar duomenų bazės
  return new Promise(resolve => {
    setTimeout(() => {
      resolve({
        id: 123,
        name: 'John Doe',
        email: 'john.doe@example.com',
      });
    }, 500);
  });
}

export default function AuthProvider({ children }) {
  const [user, setUser] = useState(null);

  useEffect(() => {
    async function getUser() {
      const userData = await fetchUser();
      setUser(userData);
    }

    getUser();
  }, []);

  return (
    
      {children}
    
  );
}

Svarbu: `AuthProvider` yra kliento komponentas, kaip nurodo direktyva `'use client'`. Taip yra todėl, kad jis naudoja `useState` ir `useEffect`, kurie yra kliento pusės „hook'ai“. Pradinis duomenų gavimas vyksta asinchroniškai `useEffect` „hook'e“, o `user` būsena perduodama į `AuthContext`.

3. Naudokite konteksto reikšmę

Dabar galite naudoti konteksto reikšmę bet kuriame savo serverio ar kliento komponente naudodami useContext „hook'ą“:

// app/components/Profile.js
'use client';

import { useContext } from 'react';
import AuthContext from '../context/AuthContext';

export default function Profile() {
  const { user } = useContext(AuthContext);

  if (!user) {
    return 

Loading...

; } return (

Profile

Name: {user.name}

Email: {user.email}

); }

Šiame pavyzdyje `Profile` komponentas yra kliento komponentas, kuris naudoja `AuthContext` norėdamas pasiekti vartotojo duomenis. Jis rodo vartotojo vardą ir el. pašto adresą.

4. „Server Context“ naudojimas serverio komponentuose

Nors ankstesnis pavyzdys parodė, kaip naudoti „Server Context“ kliento komponente, dažnai efektyviau jį naudoti tiesiogiai serverio komponentuose. Tai leidžia gauti duomenis ir atvaizduoti komponentus visiškai serveryje, dar labiau sumažinant kliento pusės „JavaScript“.

Norėdami naudoti „Server Context“ serverio komponente, galite tiesiogiai importuoti ir naudoti kontekstą komponente:

// app/components/Dashboard.js
import AuthContext from '../context/AuthContext';
import { useContext } from 'react';

export default async function Dashboard() {
    const { user } = useContext(AuthContext);

    if (!user) {
        return 

Loading...

; } return (

Welcome, {user.name}!

This is your dashboard.

); }

Svarbu: Atkreipkite dėmesį, kad nors tai yra serverio komponentas, mes vis tiek turime naudoti useContext „hook'ą“, kad pasiektume konteksto reikšmę. Taip pat komponentas yra pažymėtas kaip `async`, nes serverio komponentai natūraliai palaiko asinchronines operacijas, todėl duomenų gavimas tampa švaresnis ir efektyvesnis.

5. Apgaubkite savo programą

Galiausiai, apgaubkite savo programą konteksto teikėju, kad serverio būsena būtų prieinama visiems komponentams:

// app/layout.js
import AuthProvider from './providers/AuthProvider';

export default function RootLayout({ children }) {
  return (
    
      
        
          {children}
        
      
    
  );
}

Pažangesni naudojimo atvejai

Be pagrindinio būsenos dalijimosi, „React Server Context“ gali būti naudojamas ir sudėtingesniuose scenarijuose:

1. Internacionalizacija (i18n)

Galite naudoti „Server Context“, kad pasidalytumėte dabartine lokalizacija ar kalba su savo programa. Tai leidžia atvaizduoti lokalizuotą turinį serveryje, pagerinant SEO ir prieinamumą.

Pavyzdys:

// app/context/LocaleContext.js
import { createContext } from 'react';

const LocaleContext = createContext('en'); // Numatytasis lokalizavimas

export default LocaleContext;

// app/providers/LocaleProvider.js
'use client';

import { useState, useEffect } from 'react';
import LocaleContext from '../context/LocaleContext';

export default function LocaleProvider({ children, defaultLocale }) {
  const [locale, setLocale] = useState(defaultLocale || 'en');

  useEffect(() => {
    // Čia galite įkelti lokalizacijai būdingus duomenis pagal lokalę
    // Pavyzdžiui, gauti vertimus iš serverio ar duomenų bazės
    console.log(`Setting locale to: ${locale}`);
  }, [locale]);

  return (
    
      {children}
    
  );
}

// app/components/LocalizedText.js
'use client';

import { useContext } from 'react';
import LocaleContext from '../context/LocaleContext';
import translations from '../translations'; // Importuokite savo vertimus

export default function LocalizedText({ id }) {
  const { locale } = useContext(LocaleContext);
  const text = translations[locale][id] || id; // Jei vertimo nėra, grįžtama prie ID
  return <>{text};
}

// app/translations.js
const translations = {
  en: {
    greeting: 'Hello!',
    description: 'Welcome to our website.',
  },
  fr: {
    greeting: 'Bonjour !',
    description: 'Bienvenue sur notre site web.',
  },
  es: {
    greeting: '¡Hola!',
    description: 'Bienvenido a nuestro sitio web.',
  },
  // Pridėkite daugiau lokalizacijų ir vertimų čia
};

Šis pavyzdys parodo, kaip sukurti `LocaleContext` ir jį naudoti norint pateikti dabartinę lokalizaciją jūsų programai. `LocalizedText` komponentas tada naudoja šią lokalizaciją, kad gautų atitinkamą vertimą iš `translations` objekto. Gamybinėje aplinkoje `translations` tikriausiai įkeltumėte iš patikimesnio šaltinio, pavyzdžiui, duomenų bazės ar išorinės API.

2. Temos

Galite naudoti „Server Context“, kad pasidalytumėte dabartine tema su savo programa. Tai leidžia dinamiškai stilizuoti komponentus pagal vartotojo nuostatas ar sistemos nustatymus.

3. Funkcijų vėliavėlės

Galite naudoti „Server Context“, kad pasidalytumėte funkcijų vėliavėlėmis su savo programa. Tai leidžia įjungti ar išjungti funkcijas pagal vartotojų segmentus, A/B testavimą ar kitus kriterijus.

4. Autentifikacija

Kaip parodyta pradiniame pavyzdyje, „Server Context“ puikiai tinka autentifikacijos būsenai valdyti, išvengiant daugybės užklausų į duomenų bazę dėl paprastos vartotojo informacijos.

Geroji praktika

Norėdami maksimaliai išnaudoti „React Server Context“, laikykitės šių gerosios praktikos patarimų:

Globalūs aspektai

Naudodami „React Server Context“ globaliame kontekste, atsižvelkite į šiuos dalykus:

Pavyzdžiui, Jungtinėse Valstijose datos paprastai formatuojamos kaip MM/DD/YYYY, o daugelyje Europos šalių – DD/MM/YYYY. Panašiai, kai kurios kultūros naudoja kablelius kaip dešimtainius skyriklius ir taškus kaip tūkstančių skyriklius, o kitos – atvirkštinę konvenciją.

Pavyzdžiai iš viso pasaulio

Štai keletas pavyzdžių, kaip „React Server Context“ gali būti naudojamas skirtinguose globaliuose kontekstuose:

Išvada

„React Server Context“ yra galingas įrankis, skirtas valdyti serverio būseną „React“ programose. Naudodami „Server Context“, galite pagerinti našumą, SEO, supaprastinti savo architektūrą ir suteikti geresnę vartotojo patirtį. Nors „Server Context“ gali nepakeisti tradicinių kliento pusės būsenos valdymo sprendimų sudėtingose programose, jis supaprastina efektyvų dalijimąsi serverio duomenimis.

„React Server Components“ toliau tobulėjant, „Server Context“ tikriausiai taps dar svarbesne „React“ ekosistemos dalimi. Suprasdami jo galimybes ir apribojimus, galite jį panaudoti kurdami efektyvesnes, našesnes ir patogesnes naudoti interneto programas pasaulinei auditorijai. Suprasdami jo galimybes ir apribojimus, galite jį panaudoti kurdami efektyvesnes, našesnes ir patogesnes naudoti interneto programas.

React Server Context: revoliucija serverio būsenos dalijimesi | MLOG