【发布时间】:2020-07-08 23:51:45
【问题描述】:
我想创建一个外部函数来获取数据并返回结果。
但我不能让它工作,这是我的功能:
// Request.js:
import React from 'react'
import { authHeader } from "../../jwt/_helpers/auth-header";
import { handleResponse } from "../../jwt/_helpers/handle-response";
export default function Request(method,request) {
const requestOptions = {
method: method,
withCrendtials: true,
headers: authHeader(),
};
fetch(process.env.REACT_APP_API + request, requestOptions)
.then(handleResponse)
.then(
(result) => {
console.log(result); // This returns an object
return result // This returns undefined
},
(error) => {
return error
}
);
}
然后我就这样使用它:
// Main.js:
import Request from './Request';
let obj = Requete("GET", "/myPath/myQuery");
this.setState({foo: obj.items});
在我的 Request.js 文件中,我记录了结果并获得了正确的对象,然后我返回它并在我的 Main.js 中获得了该函数的未定义值。
如果我将代码从 Request.js 复制到 Main.js 中,它可以正常工作...
但是我的代码变得不可读,每个获取查询需要将近 20 行...
有什么想法吗?
【问题讨论】:
-
return result不会“返回未定义”。obj.items未定义,因为obj是未解析的Promise实例。 -
您能否在代码示例标签中添加您的代码
-
问题是你的
Request函数没有返回任何东西。then回调可以很好地返回对象 - 但只会导致 promise 得到解决。
标签: javascript node.js reactjs fetch