我正在 React 中创建一个自定义钩子,这是我的代码:
import {useEffect} from 'react';
const useFetch = (url) => {
useEffect(() => {
const fetchData = () => {
const data = url + "TEST";
return data;
}
fetchData();
})
}
export default useFetch;
它现在返回一些虚拟值,但这只是出于测试目的。
这是我调用自定义钩子的地方:
const Data = useFetch("https://customapiurlrandom.com/");
useEffect(() => {
console.log(Data);
}, [])
问题是,当我检查控制台时,我看到了 undefined
。我不知道为什么。
有什么想法吗?提前致谢。
答案 0 :(得分:2)
你的自定义钩子没有返回任何东西。你应该添加一个状态来保留值并返回它
import {useEffect, useState} from 'react';
const useFetch = (url) => {
const [data, setData] = useState(null);
useEffect(() => {
const fetchData = () => {
const data = url + "TEST";
return data;
}
setData(fetchData());
},[url, setData]);
return data;
}
export default useFetch;
然后像这样使用
const Data = useFetch("https://customapiurlrandom.com/");
useEffect(() => {
console.log(Data);
}, [Data])