[ PROMPT_NODE_25202 ]
client-swr-dedup
[ SKILL_DOCUMENTATION ]
## 使用 SWR 进行自动请求去重
SWR 支持跨组件实例的请求去重、缓存和重新验证。
**错误做法(无去重,每个实例都会发起请求):**
tsx
function UserList() {
const [users, setUsers] = useState([])
useEffect(() => {
fetch('/api/users')
.then(r => r.json())
.then(setUsers)
}, [])
}
**正确做法(多个实例共享同一个请求):**
tsx
import useSWR from 'swr'
function UserList() {
const { data: users } = useSWR('/api/users', fetcher)
}
**针对不可变数据:**
tsx
import { useImmutableSWR } from '@/lib/swr'
function StaticContent() {
const { data } = useImmutableSWR('/api/config', fetcher)
}
**针对数据变更(Mutation):**
tsx
import { useSWRMutation } from 'swr/mutation'
function UpdateButton() {
const { trigger } = useSWRMutation('/api/user', updateUser)
return
}
参考:[https://swr.vercel.app](https://swr.vercel.app)