javascript - 在 useState Hook 中使用 SWR 数据
问题描述
const fetcher = (url: string) => fetch(url).then((r) => r.json());
const { data, error } = useSWR(
"https://some.com/api",
fetcher,
);
有没有办法像这样在 useState 挂钩中添加数据
const fetcher = (url: string) => fetch(url).then((r) => r.json());
const { data, error } = useSWR(
"https://meme-api.herokuapp.com/gimme/5",
fetcher,
);
const [memes,setMemes]=useState(data);
因为我想在某个点连接数据以进行无限滚动
解决方案
将数据从一个变量传输到另一个变量的最快解决方案是使用useEffect
挂钩。更改时data
,更新memes
.
useEffect(() => { setMemes(data); }, [data])
无限滚动
更好的解决方案是使用 SWR 提供的无限滚动解决方案。您在此处记录了不同的选项。
纯取
在这种情况下,您也可以考虑直接使用 fetch 函数并将数据直接附加到 memes 列表中:
const [ memes, setMemes ] = useState([]);
async function fetchAnotherPage() {
const data = (await fetch('https://meme-api.herokuapp.com/gimme/5')).json();
setMemes(value => [...value, ...data.memes]);
}
useEffect(() => fetchAnotherPage(), []);
推荐阅读
- java - Sprint 启动 kafka Consumer 无法连接到 kafka 容器
- python - 如何提取python中出现频率最高的10个单词和最不出现的10个单词?
- c - C - 数据存储/访问
- rest - 如何同时处理多个 PUT 和 PATCH 请求
- mysql - 使用 docker-compose 时更改 mysql 日志记录级别
- python - 绘制y轴对x轴的导数python pandas
- android - 有没有通过我的应用程序发送短信的免费方式?
- ios - 处理低内存设备中文件(json)的持久性并将它们发送到服务器
- kernel - 内核在使用 fbprophet 拟合模型后死亡
- java - 堆栈跟踪中包含 Lombok 构建器的异常