SWR'ye Giriş: Uzaktan Veri Alma İçin Tepki Kancaları

Yayınlanan: 2022-03-10
Kısa özet ↬ Bu makalede, SWR adlı React Uygulamalarında veri almanın yeni bir yolunu inceleyeceğiz. Bu, önbelleğe alma, sayfalandırma vb. gibi işleri kolaylaştıran, uzaktan veri almaya yönelik bir dizi kancadır. Ayrıca sıfırdan bir Pokedex Uygulaması oluşturacağız ve verileri almak ve sayfalara ayırmak için SWR özelliklerini kullanacağız.

SWR, Vercel (eski adıyla ZEIT) tarafından oluşturulan ve React Hooks kullanılarak gerçek zamanlı olarak verilerin alınmasına, önbelleğe alınmasına veya yeniden getirilmesine izin veren hafif bir kitaplıktır. Bileşenlerinizin veri de dahil olmak üzere oluşturulmadan önce bir şeyi “beklemesini” sağlayan React Suspense ile oluşturulmuştur. SWR ayrıca bağımlı getirme, yeniden doğrulamaya odaklanma, kaydırma konumu kurtarma vb. gibi harika özelliklerle birlikte gelir. Ayrıca arka uçtan bağımsız olduğu ve TypeScript için iyi bir desteği olduğu için çok güçlü bir araçtır. Geleceği parlak bir paket.

Neden umursamalısın? Yalnızca API'lerden veri almakla kalmayan, aynı zamanda önbelleğe alma ve bağımlı getirme gibi şeyler yapmayı da mümkün kılan bir kitaplık arıyorsanız dikkat etmelisiniz. Bu eğitimde ele alınacaklar, çok sayıda hareketli parça içeren React uygulamaları oluştururken kullanışlı olacaktır. Axios ve Fetch API'yi kullanmanız bekleniyor, ancak bunların SWR'den farklarını karşılaştıracak olsak da, bunların nasıl uygulanacağına dair ayrıntılara girmeyeceğiz.

Bu kılavuzda, Pokemon API'sinden veri talep eden bir Pokedex uygulaması oluşturarak Uzaktan Veri Alımı için React Hooks'u tanıtacağım. Ayrıca SWR ile birlikte gelen diğer özellikleri de inceleyeceğiz ve Fetch API ve Axios kitaplığı gibi popüler çözümlere kıyasla farklılıklarını vurgulayacağız ve size bu kitaplığı kullanma nedenlerini ve neden SWR'ye dikkat etmeniz gerektiğini anlatacağız.

Öyleyse, temel bir soruyu yanıtlayarak başlayalım: SWR nedir?

Atlamadan sonra daha fazlası! Aşağıdan okumaya devam edin ↓

SWR Nedir?

SWR, bayat-yeniden doğrulamanın bir kısaltmasıdır. Uzaktan veri almak için bir React Hooks kitaplığıdır. SWR üç ana adımla çalışır: önce önbellekten verileri döndürür (eski kısım), ardından getirme isteğini gönderir (yeniden doğrulama kısmı) ve son olarak güncel verilerle birlikte gelir. Ama merak etmeyin, SWR tüm bu adımları bizim için hallediyor. Yapmamız gereken tek şey useSWR kancasına istekte bulunması için gerekli parametreleri vermek.

SWR ayrıca aşağıdakiler gibi bazı güzel özelliklere de sahiptir:

  • Arka uç agnostik
  • Hızlı sayfa gezinme
  • Odak üzerinde yeniden doğrulama
  • Aralıklı yoklama
  • Tekilleştirme iste
  • yerel mutasyon
  • sayfalandırma
  • TypeScript hazır
  • SSR desteği
  • Gerilim modu
  • React Native desteği
  • Hafif.

Kulağa büyülü geliyor mu? SWR, işleri basitleştirir ve React uygulamanızın kullanıcı deneyimini kesinlikle artırır. Ve projemizde uygulamaya başladığımızda, bu kancanın neden kullanışlı olduğunu göreceksiniz.

Paketin adının swr veya SWR olduğunu ve SWR özelliklerini almak için kullanılan kancanın useSWR olarak adlandırıldığını bilmek önemlidir.

Teorik olarak, SWR belki de veri alımınızı geliştirmek için ihtiyacınız olan şeydir. Ancak, uygulamamızda HTTP istekleri yapmak için zaten iki harika yolumuz var: Fetch API ve Axios kitaplığı.

Öyleyse, verileri almak için neden yeni bir kitaplık kullanıyorsunuz? Bu yasal soruyu bir sonraki bölümde yanıtlamaya çalışalım.

Getirme ve Axios ile Karşılaştırma

React Uygulamalarımızda HTTP istekleri yapmak için zaten birçok yolumuz var ve bunlardan en popüler ikisi Fetch API ve Axios kitaplığıdır. İkisi de harikadır ve verileri kolayca almamıza veya göndermemize olanak tanır. Ancak, işlem bir kez yapıldığında, verileri önbelleğe almamıza veya sayfalandırmamıza yardımcı olmazlar, bunu kendi başınıza yapmanız gerekir.

Axios veya Fetch, yalnızca isteği yerine getirir ve beklenen yanıtı döndürür, başka bir şey değil.

Ve SWR ile karşılaştırıldığında, biraz farklıdır çünkü kaputun altındaki SWR, sunucudan veri istemek için Fetch API'sini kullanır - bu, onun üzerine inşa edilmiş bir tür katmandır. Bununla birlikte, önbelleğe alma, sayfalandırma, kaydırma konumu kurtarma, bağımlı getirme vb. gibi bazı güzel özelliklere sahiptir ve Axios veya Fetch'in sahip olmadığı kutudan kesin olarak belirli bir düzeyde tepkisellik sağlar. Bu büyük bir avantaj çünkü bu tür özelliklere sahip olmak, React Uygulamalarımızı hızlı ve kullanıcı dostu hale getirmeye yardımcı oluyor ve kodumuzun boyutunu önemli ölçüde azaltıyor.

Sonuç olarak, HTTP istekleriyle başa çıkmaya yardımcı olsa bile SWR'nin Axios veya Fetch ile aynı olmadığını unutmayın. SWR onlardan daha gelişmiş, uygulamamızı arka uç ile senkronize tutmak için bazı geliştirmeler sağlıyor ve dolayısıyla uygulamamızın performansını artırıyor.

Artık SWR'nin Axios kitaplığı veya Fetch API ile karşılaştırıldığında ne gibi farklar olduğunu biliyoruz, böyle bir aracı neden kullanmanın zamanı geldi.

Önerilen okuma : Getirme ve Axios ile Tepki Vererek REST API'lerini Kullanma

Veri Alma İçin Neden SWR Kullanılıyor?

Daha önce de söylediğim gibi, SWR, uygulamanızın kullanılabilirliğini kolayca artırmaya yardımcı olan bazı kullanışlı özelliklerle birlikte gelir. SWR ile, useSWRPages kullanarak verilerinizi anında sayfalandırabilirsiniz, ayrıca başka bir isteğe bağlı verileri getirebilir veya belirli bir sayfaya döndüğünüzde kaydırma konumunu kurtarabilir ve çok daha fazlasını yapabilirsiniz.

Genellikle, sunucudan veri alırken kullanıcıya bir yükleme mesajı veya bir döndürücü gösteririz. Ve SWR ile, API'den yeni veriler alırken kullanıcıya önbelleğe alınmış veya eski verileri göstererek daha iyi hale getirebilirsiniz. Ve bu işlem yapıldıktan sonra, yeni sürümü göstermek için verileri yeniden doğrulayacaktır. Ve hiçbir şey yapmanıza gerek yok, SWR verileri ilk aldığınızda önbelleğe alır ve yeni bir istek yapıldığında otomatik olarak alır.

Şimdiye kadar, inşa etmeyi amaçladığınız şeye bağlı olarak Axios veya Fetch üzerinden SWR kullanmanın neden daha iyi olduğunu zaten gördük. Ancak birçok durumda, SWR'yi kullanmanızı tavsiye edeceğim çünkü sadece veri alma ve döndürmenin ötesine geçen harika özelliklere sahip.

Bununla birlikte, artık React uygulamamızı oluşturmaya başlayabilir ve uzak verileri almak için SWR kitaplığını kullanabiliriz.

O halde yeni bir proje oluşturarak başlayalım.

Kurulum

Girişte daha önce söylediğim gibi, Pokemon API'sinden veri alan bir uygulama oluşturacağız. İsterseniz farklı bir API de kullanabilirsiniz, şimdilik buna bağlı kalacağım.

Ve yeni bir uygulama oluşturmak için terminalde aşağıdaki komutu çalıştırmamız gerekiyor:

 npx create-react-app react-swr

Ardından, önce React uygulamasının bulunduğu klasöre giderek SWR kitaplığını kurmamız gerekiyor.

 cd react-swr

Ve SWR paketini kurmak için terminalde aşağıdaki komutu çalıştırın.

 yarn add swr

Veya npm kullanıyorsanız:

 npm install swr

Şimdi tüm ayarları yaptık, SWR'yi kullanmaya başlamak için projeyi aşağıdaki gibi yapılandıralım:

 src ├── components | └── Pokemon.js ├── App.js ├── App.test.js ├── index.js ├── serviceWorker.js ├── setupTests.js ├── package.json ├── README.md ├── yarn-error.log └── yarn.lock

Gördüğünüz gibi, klasör yapısı basittir. Dikkat edilmesi gereken tek şey, Pokemon.js dosyasının bulunduğu components klasörüdür. API'den veri aldığımızda, daha sonra tek bir Pokemon'u göstermek için sunum bileşeni olarak kullanılacaktır.

Harika! Bunu yerine getirerek, artık useSWR kullanarak API'den veri almaya başlayabiliriz.

Uzak Verileri Alma

SWR paketi, yukarıda gördüğümüz gibi bazı kullanışlı özelliklere sahiptir. Ancak, bu kitaplığı yapılandırmanın iki yolu vardır: yerel veya global.

Yerel kurulum, her yeni dosya oluşturduğumuzda, uzak verileri getirebilmek için SWR'yi yeniden kurmamız gerektiği anlamına gelir. Ve küresel bir kurulum, bir fetcher işlevi bir kez bildirilebildiği ve her yerde kullanılabildiği için, yapılandırmamızın bir bölümünü farklı dosyalar içinde yeniden kullanmamıza olanak tanır.

Endişelenmeyin, bu makalede ikisini de göreceğiz, ama şimdilik ellerimizi kirletelim ve App.js dosyasına anlamlı bir kod ekleyelim.

Verileri Görüntüleme

 import React from 'react' import useSWR from 'swr' import { Pokemon } from './components/Pokemon' const url = 'https://pokeapi.co/api/v2/pokemon' const fetcher = (...args) => fetch(...args).then((res) => res.json()) function App() { const { data: result, error } = useSWR(url, fetcher) if (error) return <h1>Something went wrong!</h1> if (!result) return <h1>Loading...</h1> return ( <main className='App'> <h1>Pokedex</h1> <div> {result.results.map((pokemon) => ( <Pokemon key={pokemon.name} pokemon={pokemon} /> ))} </div> </main> ) } export default App

Gördüğünüz gibi, useSWR SWR kitaplığından içe aktararak başlıyoruz. Bu, veri almak istediğiniz API'nin URL'sini ve bu verileri getirecek bir işlevi bildirir.

İşlev fetcher , verileri JSON'a dönüştürmek için burada kullanılır. Argüman olarak getirilen verileri alır ve bir şey döndürür.

Burada, parametre olarak alınan verilerin türünden ve uzunluğundan emin olmadığım için Rest operatörünü ( (...args) ) kullandığıma dikkat edin, bu nedenle, fetch argümanı olarak tekrar iletmeden önce her şeyi kopyalarım. verileri JSON'a dönüştüren ve döndüren useSWR tarafından sağlanan yöntem.

Bununla birlikte, API'nin fetcher ve url artık useSWR kancasına parametre olarak geçirilebilir. Bununla, şimdi istekte bulunabilir ve iki durum döndürür: alınan veriler ve bir hata durumu. Ve data: result , data.result ile aynıdır, data result almak için nesne imhasını kullanırız.

Döndürülen değerlerle, artık verilerin başarıyla getirilip getirilmediğini kontrol edebilir ve ardından döngüye girebiliriz. Ve her kullanıcı için, onu görüntülemek için Pokemon bileşenini kullanın.

Şimdi verilere sahibiz ve onu Pokemon Bileşenine aktarıyoruz, verileri alabilmek ve gösterebilmek için Pokemon.js güncellemenin zamanı geldi.

Pokemon Bileşenini Oluşturma

 import React from 'react' import useSWR from 'swr' const fetcher = (...args) => fetch(...args).then((res) => res.json()) export const Pokemon = ({ pokemon }) => { const { name } = pokemon const url = 'https://pokeapi.co/api/v2/pokemon/' + name const { data, error } = useSWR(url, fetcher) if (error) return <h1>Something went wrong!</h1> if (!data) return <h1>Loading...</h1> return ( <div className='Card'> <span className='Card--id'>#{data.id}</span> <img className='Card--image' src={data.sprites.front_default} alt={name} /> <h1 className='Card--name'>{name}</h1> <span className='Card--details'> {data.types.map((poke) => poke.type.name).join(', ')} </span> </div> ) }

Burada, API'den tek bir Pokemon verisi alan ve onu görüntüleyen bir bileşenimiz var. Ancak alınan veriler gerekli tüm alanları içermiyor, bu nedenle tam Pokemon nesnesini almak için API'ye başka bir istekte bulunmamız gerekiyor.

Ve görebileceğiniz gibi, bu sefer Pokemon'un adını URL'ye eklesek bile verileri almak için aynı işlemi kullanıyoruz.

Bu arada, yok etmeye aşina değilseniz, ({ pokemon }) props almak ve props.pokemon ile pokemon nesnesine erişmekle aynıdır. Nesnelerden veya dizilerden değerleri çıkarmak için sadece bir kısayol.

Bununla, projenin kök klasörüne giderseniz ve terminalde aşağıdaki komutu çalıştırırsanız:

 yarn start

Veya npm kullanıyorsanız:

 npm start

Verilerin Pokemon API'sinden başarıyla alındığını ve beklendiği gibi görüntülendiğini görmelisiniz.

getiriliyor
İllüstrasyon getiriliyor. (Büyük önizleme)

Harika! Artık SWR ile uzak verileri alabiliyoruz. Ancak, bu kurulum yerel bir kurulumdur ve biraz gereksiz olabilir çünkü App.js ve Pokemon.js aynı şeyi yapmak için aynı alıcı işlevini kullandığını zaten görebilirsiniz.

Ancak neyse ki paket, SWR'yi global olarak yapılandırmaya yardımcı olan SWRConfig adlı kullanışlı bir sağlayıcıyla birlikte gelir. Alt bileşenlerin genel yapılandırmayı ve dolayısıyla alıcı işlevini kullanmasına izin veren bir sarmalayıcı bileşendir.

SWR'yi global olarak kurmak için, React DOM kullanılarak Uygulama bileşeninin oluşturulduğu yer olduğu için index.js dosyasını güncellememiz gerekiyor. İsterseniz SWRConfig doğrudan App.js dosyasında kullanabilirsiniz.

SWR'yi Global Olarak Yapılandırma

 import React from 'react' import ReactDOM from 'react-dom' import { SWRConfig } from 'swr' import App from './App' import './index.css' const fetcher = (...args) => fetch(...args).then((res) => res.json()) ReactDOM.render( <React.StrictMode> <SWRConfig value={{ fetcher }}> <App /> </SWRConfig> </React.StrictMode>, document.getElementById('root') )

Gördüğünüz gibi, React uygulamanızın SWR özelliklerini kullanması gereken daha yüksek bileşeni veya sadece bir kısmını sarması gereken bir sağlayıcı olan SWRConfig içe aktararak başlıyoruz. Sahne olarak bir yapılandırma nesnesi bekleyen bir değer alır. Yapılandırma nesnesine birden fazla özellik iletebilirsiniz, burada sadece veri getirme işlevine ihtiyacım var.

Artık her dosyada fetcher fonksiyonunu bildirmek yerine onu burada oluşturuyoruz ve SWRConfig değer olarak geçiriyoruz. Bununla, artık başka bir işlev oluşturmadan uygulamamızdaki herhangi bir düzeyde veri alabilir ve böylece fazlalıktan kaçınabiliriz.

Bunun yanı sıra, alıcı eşittir alıcı fetcher: fetcher alıcı , bu sadece fetcher tarafından önerilen sözdizimsel şekerdir. Bu değişiklikle birlikte, küresel yapılandırmayı kullanmak için şimdi bileşenlerimizi güncellememiz gerekiyor.

Global SWR Yapılandırmasını Kullanma

 import React from 'react' import useSWR from 'swr' import { Pokemon } from './components/Pokemon' const url = 'https://pokeapi.co/api/v2/pokemon' function App() { const { data: result, error } = useSWR(url) if (error) return <h1>Something went wrong!</h1> if (!result) return <h1>Loading...</h1> return ( <main className='App'> <h1>Pokedex</h1> <div> {result.results.map((pokemon) => ( <Pokemon key={pokemon.name} pokemon={pokemon} /> ))} </div> </main> ) } export default App

Şimdi url ve fetcher yöntemini geçmek yerine, url useSWR gerekiyor. Pokemon bileşenini de biraz değiştirelim.

 import React from 'react' import useSWR from 'swr' export const Pokemon = ({ pokemon }) => { const { name } = pokemon const url = 'https://pokeapi.co/api/v2/pokemon/' + name const { data, error } = useSWR(url) if (error) return <h1>Something went wrong!</h1> if (!data) return <h1>Loading...</h1> return ( <div className='Card'> <span className='Card--id'>#{data.id}</span> <img className='Card--image' src={data.sprites.front_default} alt={name} /> <h1 className='Card--name'>{name}</h1> <span className='Card--details'> {data.types.map((poke) => poke.type.name).join(', ')} </span> </div> ) }

Fonksiyonu kaputun altında useSWR geçiren global konfigürasyon sayesinde artık bir alıcı fonksiyonumuz olmadığını zaten görebilirsiniz.

Artık global alıcı işlevini uygulamanızın her yerinde kullanabilirsiniz. useSWR kancasının uzak verileri alması gereken tek şey URL'dir.

Bununla birlikte, URL'yi tekrar tekrar bildirmekten kaçınmak için özel bir kanca oluşturarak ve bunun yerine yolu parametre olarak ileterek kurulumu daha da geliştirebiliriz.

Özel Bir Kanca Oluşturarak Gelişmiş Kurulum

Bunu yapmak için, projenin kökünde useRequest.js adlı yeni bir dosya oluşturmanız (istediğiniz şekilde adlandırabilirsiniz) ve bu kod bloğunu aşağıya eklemeniz gerekir.

 import useSwr from 'swr' const baseUrl = 'https://pokeapi.co/api/v2' export const useRequest = (path, name) => { if (!path) { throw new Error('Path is required') } const url = name ? baseUrl + path + '/' + name : baseUrl + path const { data, error } = useSwr(url) return { data, error } }

Burada, tam URL'yi oluşturmak için bir yol ve isteğe bağlı olarak bir ad alan ve bunu temel URL'ye ekleyen bir işlevimiz var. Daha sonra bir name parametresinin alınıp alınmadığını kontrol eder ve buna göre işlem yapar.

Ardından, bu URL, uzak verileri getirebilmek ve geri döndürebilmek için useSWR kancasına bir parametre olarak iletilir. Ve herhangi bir yol geçilmezse hata verir.

Harika! şimdi özel kancamızı kullanmak için bileşenleri biraz değiştirmemiz gerekiyor.

 import React from 'react' import { useRequest } from './useRequest' import './styles.css' import { Pokemon } from './components/Pokemon' function App() { const { data: result, error } = useRequest('/pokemon') if (error) return <h1>Something went wrong!</h1> if (!result) return <h1>Loading...</h1> return ( <main className='App'> <h1>Pokedex</h1> <div> {result.results.map((pokemon) => ( <Pokemon key={pokemon.name} pokemon={pokemon} /> ))} </div> </main> ) } export default App

Şimdi, SWR kancasını kullanmak yerine, bunun üzerine inşa edilmiş özel kancayı kullanıyoruz ve sonra beklendiği gibi yolu bir argüman olarak iletiyoruz. Bununla birlikte, her şey eskisi gibi çalışacak, ancak çok daha temiz ve esnek bir konfigürasyonla.

Pokemon bileşenini de güncelleyelim.

 import React from 'react' import { useRequest } from '../useRequest' export const Pokemon = ({ pokemon }) => { const { name } = pokemon const { data, error } = useRequest('/pokemon', name) if (error) return <h1>Something went wrong!</h1> if (!data) return <h1>Loading...</h1> return ( <div className='Card'> <span className='Card--id'>#{data.id}</span> <img className='Card--image' src={data.sprites.front_default} alt={name} /> <h1 className='Card--name'>{name}</h1> <span className='Card--details'> {data.types.map((poke) => poke.type.name).join(', ')} </span> </div> ) }

Özel kancamızın işleri nasıl daha kolay ve esnek hale getirdiğini zaten görebilirsiniz. Burada, useRequest getirilecek Pokemon'un adını ek olarak iletmemiz gerekiyor ve o bizim için her şeyi hallediyor.

Umarım bu harika kitaplığın keyfini çıkarmaya başlarsınız — Ancak, SWR çok fazla özellik sunduğundan hala keşfedecek şeylerimiz var ve bunlardan biri, verileri kolayca sayfalandırmak için bir kanca olan useSWRPages . Öyleyse, bu kancayı projede kullanalım.

Verilerimizi useSWRPages ile Sayfalandırın

SWR, verileri kolayca sayfalandırmamıza ve yalnızca bir kısmını talep etmemize ve gerektiğinde bir sonraki sayfada gösterilmek üzere verileri yeniden getirmemize olanak tanır.

Şimdi usePagination.js projesinin kökünde yeni bir dosya oluşturalım ve onu sayfalama için özel bir kanca olarak kullanalım.

 import React from 'react' import useSWR, { useSWRPages } from 'swr' import { Pokemon } from './components/Pokemon' export const usePagination = (path) => { const { pages, isLoadingMore, loadMore, isReachingEnd } = useSWRPages( 'pokemon-page', ({ offset, withSWR }) => { const url = offset || `https://pokeapi.co/api/v2${path}` const { data: result, error } = withSWR(useSWR(url)) if (error) return <h1>Something went wrong!</h1> if (!result) return <h1>Loading...</h1> return result.results.map((pokemon) => ( <Pokemon key={pokemon.name} pokemon={pokemon} /> )) }, (SWR) => SWR.data.next, [] ) return { pages, isLoadingMore, loadMore, isReachingEnd } }

Gördüğünüz gibi, burada verileri kolayca sayfalandırmaya izin veren yardımcı olan useSWRPages içe aktararak başlıyoruz. 4 argüman alır: önbelleğe alma için de kullanılan istek pokemon-page anahtarı, veriler başarılı bir şekilde alınırsa bir bileşen döndüren verileri getiren bir işlev ve SWR nesnesini alan ve veri talep eden başka bir işlev. sonraki sayfa ve bir dizi bağımlılık.

Ve veriler bir kez alındığında, useSWRPages işlevi birkaç değer döndürür, ancak burada bunlardan 4 tanesine ihtiyacımız var: verilerle birlikte döndürülen bileşen olan pages , verilerin o anda getirilip getirilmediğini kontrol eden isLoadingMore işlevi, almaya yardımcı olan loadMore işlevi daha fazla veri ve alınacak veri olup olmadığını belirleyen isReachingEnd yöntemi.

Artık verileri sayfalamak için gereken değerleri döndüren özel kancaya sahibiz, şimdi App.js dosyasına geçebilir ve biraz ince ayar yapabiliriz.

 import React from 'react' import { usePagination } from './usePagination' import './styles.css' export default function App() { const { pages, isLoadingMore, loadMore, isReachingEnd } = usePagination( '/pokemon' ) return ( <main className='App'> <h1>Pokedex</h1> <div>{pages}</div> <button onClick={loadMore} disabled={isLoadingMore || isReachingEnd} > Load more... </button> </main> ) }

usePagination kancası içe aktarıldığında, yolu parametre olarak geçirebilir ve döndürülen değerleri geri alabiliriz. pages bir bileşen olduğundan, veriler veya buna benzer bir şey arasında döngüye girmemize gerek yoktur.

Daha sonra, daha fazla veri almak için loadMore işlevini kullanırız ve alma işlemi bitmediyse veya getirilecek veri yoksa devre dışı bırakırız.

Harika! Bu değişiklikle, artık projenin köküne göz atabilir ve uygulamamızı önizlemek için bu komutla sunucuyu başlatabiliriz.

 yarn start

Veya npm kullanıyorsanız:

 npm start

Verilerin başarıyla alındığını görmelisiniz ve butona tıklarsanız SWR tarafından yeni veriler alınacaktır.

sayfalandırma
Sayfalandırma. (Büyük önizleme)

Şimdiye kadar SWR kütüphanesini pratikte gördük ve umarım onun üzerinde değer buluyorsunuzdur. Ancak yine de sunduğu bazı özellikler var. Bir sonraki bölümde bu işlevleri inceleyelim.

SWR'nin Diğer Özellikleri

SWR kitaplığında, React uygulamaları oluşturma şeklimizi basitleştiren bir sürü kullanışlı şey var.

Odak Yeniden Doğrulama

Bir sayfaya yeniden odaklandığınızda veya sekmeler arasında geçiş yaptığınızda, verilerin kesin olması için güncellemeye veya yeniden doğrulamaya izin veren bir özelliktir. Ve varsayılan olarak, bu işlevsellik etkindir, ancak ihtiyacınıza uymuyorsa yine de devre dışı bırakabilirsiniz. Özellikle yüksek seviyeli sıklıkta güncellemelere sahip verileriniz varsa faydalı olabilir.

Aralıkta Yeniden Getir

SWR kitaplığı, belirli bir süre sonra verilerin yeniden alınmasına izin verir. Verileriniz yüksek hızda değiştiğinde veya veritabanınızdan yeni bir bilgi almak için yeni bir talepte bulunmanız gerektiğinde kullanışlı olabilir.

Yerel Mutasyon

SWR ile, yeni veriler getirildiğinde (yeniden doğrulama) otomatik olarak güncellenecek geçici bir yerel durum ayarlayabilirsiniz. Bu özellik, özellikle Çevrimdışı öncelikli bir yaklaşımla ilgilendiğinizde devreye girer, verilerin kolayca güncellenmesine yardımcı olur.

Kaydırma Pozisyonu Kurtarma

Bu özellik, özellikle büyük listelerle uğraşırken çok kullanışlıdır. Sayfaya geri döndükten sonra kaydırma konumunu kurtarmanızı sağlar. Ve her durumda, uygulamanızın kullanılabilirliğini artırır.

Bağımlı Alma

SWR, diğer verilere bağlı olan verileri getirmenizi sağlar. Bu, A verilerini getirebileceği ve bu işlem yapıldıktan sonra şelalelerden kaçınırken B verilerini almak için kullandığı anlamına gelir. Ve bu özellik, ilişkisel verileriniz olduğunda yardımcı olur.

Bununla birlikte, SWR herhangi bir konuda kullanıcı deneyimini artırmaya yardımcı olur. Bundan daha fazla özelliği vardır ve birçok durumda onu Fetch API veya Axios kitaplığı üzerinden kullanmak daha iyidir.

Çözüm

Bu makale boyunca, SWR'nin neden harika bir kütüphane olduğunu gördük. React Hooks kullanılarak uzaktan veri alınmasına izin verir ve sayfalandırma, verileri önbelleğe alma, aralıklarla yeniden getirme, kaydırma konumu kurtarma vb. gibi kullanıma hazır bazı gelişmiş özellikleri basitleştirmeye yardımcı olur. SWR ayrıca arka uçtan bağımsızdır, yani her türlü API veya veritabanından veri alabilir. Kesin olarak, SWR, React uygulamalarınızın kullanıcı deneyimini çok artırır, parlak bir geleceği vardır ve buna göz kulak olmalı veya bir sonraki React uygulamanızda daha iyi kullanmalısınız.

Bitmiş projeyi burada canlı olarak önizleyebilirsiniz.

Okuduğunuz için teşekkürler!

Sonraki adımlar

Bu eğitimin kapsamı dışında size daha iyi bir anlayış kazandıracak aşağıdaki bağlantıları kontrol etmeye devam edebilirsiniz.

  • SWR
  • SWR Belgeleri

SmashingMag'de Daha Fazla Okuma :

  • React'te Şekillendirme Bileşenleri
  • Immer ile Daha İyi Redüktörler
  • React'te Yüksek Dereceli Bileşenler
  • Tailwind Kullanarak Yeniden Kullanılabilir React Bileşenleri Oluşturma