【发布时间】:2021-03-19 12:48:22
【问题描述】:
我试图通过单击按钮而不是在控制台上而是在屏幕本身上获取 API 数据结果。我可以在不使用按钮的情况下使用 UseEffect 来做到这一点.. 但我无法使用按钮来做到这一点。它在这段代码上给我的错误是这样的:
"TypeError: items.map is not a function"
当我尝试在 usestate 上使用简单的字符串(如 Usestate(''))然后执行我的代码时,它给了我这样的错误:
"Error: Objects are not valid as a React child (found: object with keys {results, info}).
If you meant to render a collection of children, use an array instead."
我什至不明白这个错误,因为我是新手。是因为我用的是axios吗?而不是 fetch.. 我怎样才能在屏幕上显示它?
import React, {useState} from 'react'
import axios from 'axios'
function Things() {
const [items, setItems] = useState([])
function fetchRandomData() {
axios.get('https://randomuser.me/api/').then(
(response) => {
setItems(response.data)
}
);
}
return (
<div>
<button onClick={fetchRandomData}>Fetch Random Data</button>
<div>
{items.map(item => (
<li key={item.status}>{item.data.results}</li>
))};
</div>
</div>
);
};
export default Things
【问题讨论】:
-
尝试引入布尔变量将其初始化为 false 然后 onClick 事件将其设置为 true。使用 useEffect() { if(shouldFetch) 然后你的 API 请求 }
标签: reactjs api react-hooks