javascript - 函数执行后需要渲染 React js
问题描述
我正在尝试从 API 网关获取一些数据并使用它来呈现一棵树,但我无法这样做。这是我正在尝试的
var structure = [
];
export default function App() {
React.useEffect(() => {
async function fetchData() {
const res = await axios.get(`Some API_GATEWAY Request`)
structure.push(JSON.parse(res['data']))
console.log(structure[0])
}
fetchData();
console.log(structure[0])
}, []);
return (
<div className="App">
{console.log(structure[0])}
<Tree data={structure} />
</div>
);
}
这里的输出是
undefined //from 3rd console.log
undefined //from 2nd console.log
some value //from 1st console.log
如何获取返回中的值以便我可以使用结构
解决方案
import React, { useState, useEffect } from "react";
import axios from "axios";
const App = () => {
const [catties, setCatties] = useState([]);
const [loading, setLoading] = useState(false);
const fetchCats = async () => {
setLoading(true);
const res = await axios.get("https://api.thecatapi.com/v1/images/search");
setLoading(false);
setCatties([...catties, ...res.data]);
};
useEffect(() => {
fetchCats();
}, []);
if (loading) {
return <h1> ...loading</h1>;
}
return (
<div>
{catties.map(el => (
<img src={el.url} alt="Catty" key={el.id} />
))}
</div>
);
};
export default App;
在codesandbox中运行这段代码,你会看到它是如何工作的。这是一种标准的清洁方式。通常你希望将这些函数保留在 redux 或 context 中。请让我知道这是否对您有用。
推荐阅读
- reactjs - React + i18next:为什么我的嵌套键不起作用?
- c# - C# Localization = true 原因“属性‘文本’的代码生成失败。”
- javascript - Knex.js 多个 hasTables 似乎创建了推送数组
- python - AWS CDK,为 Route53 中的现有托管区域创建别名记录
- android - 将鼠标悬停在 Android Studio 中的代码完成选项上时如何查看方法文档?
- swift - 在导航控制器中测试 topviewcontroller
- java - 如何使用 Selenium 和 Java 从 html 中提取文本 2?
- c# - 如何向新添加的连接器添加标签以及如何获取 beginItem 标签和 EndItem 标签?
- python - 在 /admin/login/ 出现 OperationalError 错误没有这样的表:auth_user
- c# - 在 ASP.NET Core 中正确实现 NRT