api 当 url_slug 在 React Hook 中发生变化时数据没有变化
api data not changing when url_slug is changing in react hook
我每次都在尝试更改数据,url_slug正在更改但数据没有刷新。获取相同的数据。
const [relatedSnippets,setrelatedSnippets] = useState([]);
const [loading,setLoading] = useState(false);
useEffect(async ()=>{
setLoading(true);
const snippetData = await getData(url_slug);
setrelatedSnippets(snippetData.snippets);
setLoading(false);
},[url_slug]);
async function getData(url_slug) {
var config = {
headers: {
accept: '*/*',
'Content-Type': 'application/json',
'API_ACCESS_KEY': 'hns2V0Ddbkkn8r1XLq3Kw7ZoiBTR0nmA',
}
};
const data = {
slug:url_slug,
}
const url = `http://localhost:8000/api/similarsnippets`;
const snippetData = await axios.post(url,data,config);
const finalData = snippetData.data;
return finalData;
}
useEffect
挂钩的回调需要是一个同步函数。将 async
函数移动到回调中,然后调用它。
useEffect(() => {
const loadData = async () => {
setLoading(true);
const snippetData = await getData(url_slug);
setrelatedSnippets(snippetData.snippets);
setLoading(false);
};
loadData();
}, [url_slug]);
我每次都在尝试更改数据,url_slug正在更改但数据没有刷新。获取相同的数据。
const [relatedSnippets,setrelatedSnippets] = useState([]);
const [loading,setLoading] = useState(false);
useEffect(async ()=>{
setLoading(true);
const snippetData = await getData(url_slug);
setrelatedSnippets(snippetData.snippets);
setLoading(false);
},[url_slug]);
async function getData(url_slug) {
var config = {
headers: {
accept: '*/*',
'Content-Type': 'application/json',
'API_ACCESS_KEY': 'hns2V0Ddbkkn8r1XLq3Kw7ZoiBTR0nmA',
}
};
const data = {
slug:url_slug,
}
const url = `http://localhost:8000/api/similarsnippets`;
const snippetData = await axios.post(url,data,config);
const finalData = snippetData.data;
return finalData;
}
useEffect
挂钩的回调需要是一个同步函数。将 async
函数移动到回调中,然后调用它。
useEffect(() => {
const loadData = async () => {
setLoading(true);
const snippetData = await getData(url_slug);
setrelatedSnippets(snippetData.snippets);
setLoading(false);
};
loadData();
}, [url_slug]);