Javascript 当api';s加载变量为false
因此,我在网上找到了一个类似follow的fetch函数,它似乎是检索api信息的好方法:Javascript 当api';s加载变量为false,javascript,reactjs,Javascript,Reactjs,因此,我在网上找到了一个类似follow的fetch函数,它似乎是检索api信息的好方法: const useFetch = (url, options = defaultOptions) => { const [response, setResponse] = useState(null); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); co
const useFetch = (url, options = defaultOptions) => {
const [response, setResponse] = useState(null);
const [error, setError] = useState(null);
const [loading, setLoading] = useState(true);
const fetchData = useCallback(async () => {
setLoading(true);
try {
const res = await fetch(url, options);
const json = await res.json();
setResponse(json);
setLoading(false);
} catch (err) {
setError(err);
}
}, [options, url]);
useEffect(() => {
if (url) {
fetchData();
}
}, [url]);
return {
error,
fetchData,
loading,
response,
};
};
现在,我尝试检索另一个组件中的数据,并在加载变量更新时更新视图
像这样:
const Test = () => {
const { loading, response } = useFunctionThatExtendsUseFetch();
const template = () => {
if (loading) {
console.log('loading', loading);
return 'loading';
}
console.log('finished loading', response);
return response;
};
return (
<div>
<p>{content}</p>
</div>
);
};
const Test=()=>{
const{loading,response}=UseFunctionthatExtendUseFetch();
常量模板=()=>{
如果(装载){
console.log('加载',加载);
返回“加载”;
}
console.log('已完成加载',响应);
返回响应;
};
返回(
{content}
);
};
但没有任何改变,不知道为什么。。。不过,当我在组件中记录加载变量的值时,加载变量确实会发生变化
谢谢除非我遗漏了什么,
内容
没有定义,模板
从未使用过。试试这个:
const Test = () => {
const { loading, response } = useFunctionThatExtendsUseFetch();
if (loading) {
console.log('loading', loading);
} else {
console.log('finished loading', response);
}
const content = loading ? 'loading' : response;
return (
<div>
<p>{content}</p>
</div>
);
};
const Test=()=>{
const{loading,response}=UseFunctionthatExtendUseFetch();
如果(装载){
console.log('加载',加载);
}否则{
console.log('已完成加载',响应);
}
常量内容=加载?“加载”:响应;
返回(
{content}
);
};
或者您可以简单地在代码中用{template()}
替换{content}
但是,如果您的响应不是字符串,您将遇到问题。什么是扩展UseFetch()的UseFunctions它发生在我们所有人身上。。。总是