Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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
Node.js React.JS函数return未返回_Node.js_Reactjs - Fatal编程技术网

Node.js React.JS函数return未返回

Node.js React.JS函数return未返回,node.js,reactjs,Node.js,Reactjs,我有一个名为get的函数,它从本地restapi获取数据 const get = () => { axios.get(URL).then((response) => { console.log(response) return response; }).catch((error) => { console.log('ERROR', error) return error }) } 然后在

我有一个名为get的函数,它从本地restapi获取数据

const  get = () => {
    axios.get(URL).then((response) => {
        console.log(response)
        return response;
    }).catch((error) => {
        console.log('ERROR', error)
        return error
    })
}
然后在App.js中我使用了这个函数

  useEffect(() =>{
    const response = Data.get();
    console.log(response)
    setPersons(response.data)
  }, []);
get函数中的
console.log(response)
返回RESTAPI数据,而
useffect()
未定义日志记录
有人知道它为什么不返回相同的吗?

看起来您在
get()
函数中缺少了一条return语句。应该是这样的:

const get = () => {
    return axios.get(URL).then((response) => {
        console.log(response)
        return response;
    }).catch((error) => {
        console.log('ERROR', error)
        return error
    })
}
const  get = (success, error) => {
    axios.get(URL).then((response) => {
        console.log(response)
        success(response)
    }).catch((e) => {
        console.log('ERROR', e)
        error(e)
    })
}
这将导致
Data.get()
从axios返回承诺

然后,您需要等待返回的承诺得到解决,然后才能从App.js登录

您可以使用
完成此操作。然后

 useEffect(() =>{
    Data.get()
      .then(response => {
        console.log(response)
        setPersons(response.data)
      });
  }, []);
或异步函数:

  useEffect(async () =>{
    const response = await Data.get();
    console.log(response)
    setPersons(response.data)
  }, []);

axios请求是异步的。调用
Data.get
后,代码将继续下一行,而无需等待响应。您可以通过允许
get
函数接受回调来修复此问题。大概是这样的:

const get = () => {
    return axios.get(URL).then((response) => {
        console.log(response)
        return response;
    }).catch((error) => {
        console.log('ERROR', error)
        return error
    })
}
const  get = (success, error) => {
    axios.get(URL).then((response) => {
        console.log(response)
        success(response)
    }).catch((e) => {
        console.log('ERROR', e)
        error(e)
    })
}