javascript - 将 API 的输出导出为对象
问题描述
我刚刚开始使用 REACT 并使用 API。我正在尝试将 API 的输出保存到对象“obj”并将其导出(稍后从中提取我需要的内容并在 React 组件中使用它)。当我将对象导入另一个文件并尝试将其打印到控制台时,我得到“未定义”。我究竟做错了什么。这是代码:
const url= "someURL";
let obj;
fetch(url)
.then(response => response.json())
.then(data => obj = data)
.then(() => console.log(obj))
export default {
obj
};
在我导入“obj”的另一个文件中:
import React, { useEffect } from 'react';
import obj from './Api';
function Company() {
useEffect(() => {
console.log(obj)
});
return (
<div className="centered">Your data is: {JSON.stringify(obj)} </div>
)
};
export default Company;
解决方案
您必须创建一个变量来指示数据是否已加载。
const url= "someURL";
let obj;
let loaded = false;
fetch(url)
.then(response => response.json())
.then(data => obj = data)
.then(() => loaded = true)
export default {
obj
};
然后,您必须将该值传递给您尝试呈现数据的组件。
render <Company loaded={loaded} />
然后当你渲染 comp
您应该执行以下操作:
import React, { useEffect } from 'react';
function Company() {
useEffect(() => {
console.log(obj)
});
return (
{props.loaded ? <div className="centered">Your data is: {JSON.stringify(obj)} </div> : "loading..."}
)
};
export default Company;
如果您想在全球范围内导入和对象并管理它,而不必向下传递道具。我推荐使用 redux-thunk / redux-saga 来处理异步全局存储请求
推荐阅读
- html - 如何用下划线设置标题中最后一个单词的样式
- frontend - 在哪里存储秘密 WEB API 密钥?(API密钥可以存储在前端js文件中吗?是否必须将密钥存储在后端?)
- postgresql - 为什么postresql排序没有order by?
- c# - 即使在调用 GC.Collect() 后也没有释放内存流
- java - 如何在 Spring + Mongo 的另一个数组中更新数组内的对象
- jenkins - 如何为 Job DSL 创建的多分支作业设置发现分支策略
- python - 从字符串创建逗号分隔列表,但忽略双引号内的逗号
- python - 如何获取查询集中每个对象的所有相关对象,由Sqlalchemy中的另一个模型过滤?
- excel - 在参数托盘求解器中插入形状
- reactjs - 如何使用 React JS 将 WEBA 或 Opus 音频文件转换为 Mp3?