gpt4 book ai didi

Reactjs - 数据被多次获取

转载 作者:行者123 更新时间:2023-12-05 03:46:37 24 4
gpt4 key购买 nike

大家好,我最近开始使用 React,我有一个简单的问题,我有一个应该获取内容并将响应存储在变量数据中的函数。页面加载后,当我控制台记录它时,我看到数据被多次获取,当我刷新它时,它又加载了几次。我该如何解决这个问题?

import {useQuery} from "react-query";
import axios from "axios";

const fetchBrands = async () =>{
const res = await axios.get("APIURL");
return res.data;
}
export default function LoadBrands() {
const {data, status} = useQuery('getbrand', fetchBrands);
return(
<>
{status === 'loading' && <div>Loading</div>}
{status === 'error' && <div>Error Loading</div>}
{status === 'success' && <div>YUPP</div>}
{console.log(data)}
</>
)
}

最佳答案

所以嘿,这里几乎没有错您正在使用 react-query 但您没有使用任何查询缓存,如果状态发生变化,则在每次重新渲染时调用 api。

此外, View 层的 console.log 也不能很好地表明它正在获取数据fethbrand 函数的控制台更加准确

/* eslint-disable jsx-a11y/anchor-is-valid */
import React from "react";
import ReactDOM from "react-dom";
import { useQuery, QueryCache, ReactQueryCacheProvider } from "react-query";
import axios from "axios";

const queryCache = new QueryCache();

const fetchBrands = async () => {
const res = await axios.get(
"https://api.github.com/repos/tannerlinsley/react-query"
);
console.log("test here if it will call api");
return res.data;
};

function LoadBrands() {
const { data, status } = useQuery("getbrand", fetchBrands);
return (
<>
{status === "loading" && <div>Loading</div>}
{status === "error" && <div>Error Loading</div>}
{status === "success" && <div>YUPP</div>}
{console.log(data)}
</>
);
}

export default function App() {
return (
<ReactQueryCacheProvider queryCache={queryCache}>
<LoadBrands />
</ReactQueryCacheProvider>
);
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

这是 fiddle :https://codesandbox.io/s/bold-dawn-huudy?file=/src/index.js

关于Reactjs - 数据被多次获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65181222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com