⊗jsrtPmRtNS 43 of 47 menu

React Router-da Naviqasiya Veziyyeti

Əgər siyahıdakı məhsullar üzərinde kliklesek, görürük ki, ilk defe məhsul sehifesi gecikme ile yüklenir, qalanlar isə artıq sürətli, eyni şey məhsul əlavə edende ve yenilenede baş verir, çünki bizim müştəri terefinde keş var.

Bu dersde istifadeçiye sehifemizin hansı veziyyetde olduğunu göstereceyik. Bunda bizə useNavigation çökü kömek ede biler. Öz işinin neticesi olaraq bu çök bir sıra xüsusiyyetleri olan bir obyekt verir. Bizi maraqlandıracaq olan onlardan biridir - state xüsusiyyeti.

state xüsusiyyeti 3 qiymet ala biler: 'idle' (heç nə baş vermir), 'submitting' (forma gönderilende POST, PUT, PATCH ve ya DELETE ile action çağırılanda), 'loading' (növbəti marşrut üçün yükleici çağırılanda, növbəti sehifeni çıxartmaq üçün). Bizi sonuncu qiymet maraqlandıracaq.

Gəlin root.jsx faylına keçek ve bu çökü import edek:

import { useNavigation } from 'react-router-dom';

Sonra, çökün qaytardığı netice üçün, Root funksiyasında navigation dəyişkeni təyin edek - return-dən əvvəl:

const { products } = useLoaderData(); const navigation = useNavigation();

İndi isə onun state xüsusiyyetinden istifade edek, əgər bu qiymet 'loading' olarsa, biz məhsul məlumatlarının çıxarıldığı div üçün loading klassi təyin edeceyik:

<div id="product" className={navigation.state === 'loading' ? 'loading' : ''}> <Outlet /> </div>

Bizə loading klassi üçün index.css faylına stil əlavə etmek qalır. Gəlin yükleme veziyyetinde sadəcə opacity-i artıraq:

div.loading { opacity: 0.3; }

İndi, saytı yenidən yüklemiş halda, siyahıdakı məhsullar üzərinde kliklesek ve ya, məsələn, yeni məhsul əlavə etsek, görərik ki, cari sehife növbəti sehife peyda olmamışdan əvvəl bir anlıq solğunlaşacaq.

Əvvəlki derslerin tapşırıqlarında yaratdığınız proqramı götürün. Ders materiallarından istifade ederek, useNavigation çökü vasitesile elə edin ki, istifadeçi növbəti tələbə məlumatları sehifesinin yüklendiyini görə bilsin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et