Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当api';s加载变量为false_Javascript_Reactjs - Fatal编程技术网

Javascript 当api';s加载变量为false

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

因此,我在网上找到了一个类似follow的fetch函数,它似乎是检索api信息的好方法:

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它发生在我们所有人身上。。。总是