Capítulo 358 de 456
Fetch data no cliente (não no servidor) quando a página não precisa de SEO indexado, não precisa de prerender, ou o conteúdo muda com frequência. Pode ser usado tanto no nível de página quanto no nível de componente individual.
useState + useEffect + fetch.import { useState, useEffect } from 'react'
function Profile() {
const [data, setData] = useState(null)
const [isLoading, setLoading] = useState(true)
useEffect(() => {
fetch('/api/profile-data')
.then((res) => res.json())
.then((data) => {
setData(data)
setLoading(false)
})
}, [])
if (isLoading) return <p>Loading...</p>
if (!data) return <p>No profile data</p>
return <div><h1>{data.name}</h1><p>{data.bio}</p></div>
}
useEffect, sem cache nem revalidação.import useSWR from 'swr'
const fetcher = (...args) => fetch(...args).then((res) => res.json())
function Profile() {
const { data, error } = useSWR('/api/profile-data', fetcher)
if (error) return <div>Failed to load</div>
if (!data) return <div>Loading...</div>
return <div><h1>{data.name}</h1><p>{data.bio}</p></div>
}