⊗jsrtPmRtNS 43 of 47 menu

Состояние навигации во React Router

Ако кликнеме на производи во листата, гледаме дека за прв пат страницата со производот се вчитува со одложување, а потоа веќе брзо, истото важи при додавање и ажурирање на производ, бидејќи имаме кеш на клиентската страна.

Во оваа лекција ќе му покажеме на корисникот во каква состојба се наоѓа нашата страница. Во ова може да ни помогне хукот useNavigation. Резултатот од неговата работа овој хук дава објект со низ својства. Нас ќе нè интересира едно од нив - својството state.

Својството state може да има 3 вредности: 'idle' (ништо не се случува), 'submitting' (кога при испраќање на форма преку POST, PUT, PATCH или DELETE е повикан action на рутата), 'loading' (кога е повикан вчитувачот за следната рута, за да се исцрта следната страница). Нас ќе нè интересира последната вредност.

Ајде да одиме во датотеката root.jsx и да го импортираме овој хук:

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

Потоа, за вратениот резултат од хукот, ќе направиме променлива navigation во функцијата Root - пред return:

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

И сега ќе го искористиме нејзиното својство state, ако ова е вредноста 'loading', тогаш ќе поставиме класа loading за div-от во кој се исцртуваат податоците за производот:

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

Останува да додадеме стилови за класата loading во index.css. Ајде во случај на состојба на вчитување едноставно да ја зголемуваме opacity:

div.loading { opacity: 0.3; }

Сега, ако, ја превчитаме страницата, кликнеме на производи во листата или, на пример, додадеме нов производ, ќе видиме дека тековната страница за одреден момент ќе избледи, пред да се појави следната.

Земете ја апликацијата, креирана од вас во задачите од претходните лекции. Користејќи ги материјалите од лекцијата, со помош на хукот useNavigation направете така што корисникот ќе може да види дека следната страница со податоци за студентот се вчитува.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј