Javascript 为什么这个自定义钩子在react中返回未定义?

Javascript 为什么这个自定义钩子在react中返回未定义?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我正在React中创建一个自定义挂钩,这是我的代码: import {useEffect} from 'react'; const useFetch = (url) => { useEffect(() => { const fetchData = () => { const data = url + "TEST"; return data; } fetc

我正在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);
}, [])
问题是,当我检查控制台时,我看到
未定义
。我不知道为什么


有什么想法吗?提前感谢。

您的自定义挂钩没有返回任何内容。您应该添加一个状态来保留该值并返回它

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])

你的自定义钩子没有返回任何内容。您应该添加一个状态来保留该值并返回它

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])

您是否在
fetchData()
的内部执行
fetch()
?您的
useFetch()
不返回任何内容,或者您不返回任何内容。您应该将
useState
useffect
@NickParsons一起使用。最终的目标是在fetchData内部执行fetch。实际上,如何使我的
useffetch
返回
fetchData()?正是@ritaj所说的。在这里查看完整的示例,您是否在
fetchData()
的内部执行
fetch()
?您的
useFetch()
不返回任何内容,或者您不返回任何内容。您应该将
useState
useffect
@NickParsons一起使用。最终的目标是在fetchData内部执行fetch。实际上,如何使我的
useffetch
返回
fetchData()?正是@ritaj所说的。请点击此处查看完整示例,感谢您的回答!这很有效。我发现在React中使用正常逻辑非常困难。。。因为,为什么我需要这个州?状态用于组件的状态,对吗?当取消状态更改时,组件将重新渲染。那么为什么这里需要状态呢?谢谢回答!这很有效。我发现在React中使用正常逻辑非常困难。。。因为,为什么我需要这个州?状态用于组件的状态,对吗?当取消状态更改时,组件将重新渲染。那么,为什么这里需要国家?