В коде React при попытке сопоставить результаты API я не могу получить данные. Вот код для справки.
export const AdminPanel = () => {
const classes = useStyles();
const [results, setResults] = useState([])
const profileData = async () => {
try {
const res = await axios.get("https://randomuser.me/api/?results=10");
setResults(res)
} catch(err) {
console.info(err)
}
}
useEffect(() => {
profileData()
}, [])
return (
<TableContainer component = {Paper}>
<Table className = {classes.table} aria-label = "simple table">
<TableHead>
<TableRow>
<TableCell>First Name</TableCell>
<TableCell align = "right">Last Name</TableCell>
<TableCell align = "right">Address</TableCell>
<TableCell align = "right">Photo</TableCell>
<TableCell align = "right">Email</TableCell>
<TableCell align = "right">DOB</TableCell>
</TableRow>
</TableHead>
<TableBody>
{results.map((person) => {
console.info('PERSON', person)
})}
</TableBody>
</Table>
</TableContainer>
);
}
Несмотря на то, что результаты объявлены как массив, все равно выдается ошибка. Я где-то ошибаюсь. Какое может быть подходящее решение?
После того, как console.info показывает сначала [], а затем все данные
Ты почти там. Ваш вызов axios должен немного измениться. Вот как это исправить:
import React from "react";
import axios from "axios";
import "./styles.css";
export default function App() {
const [results, setResults] = React.useState([]);
const profileData = async () => {
try {
const res = await axios
.get("https://randomuser.me/api/?results=10")
.then((result) => result.data.results);
setResults(res)
} catch (err) {
console.info(err);
}
};
React.useEffect(() => {
profileData();
}, []);
return (
<div className = "App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
{results.map((person) => {
console.info("PERSON", person);
})}
</div>
);
}
Обратите внимание на эту часть:
const res = await axios
.get("https://randomuser.me/api/?results=10")
.then((result) => result.data.results);
Также имейте в виду, что console.info("PERSON", person);
внутри вашей функции возврата на самом деле ничего не будет отображаться на странице, она будет выведена на консоль. Просто хотел прояснить это.
Песочница: https://codesandbox.io/s/exciting-shockley-9m5vj?file=/src/App.js
setResults(res.results) должен выполнить задание
можете ли вы консоль журналировать результаты и поделиться