我想打电话给其他端点,检索项目数组并将其显示在页面中。
const [users, setUsers] = useState([]);
axios
.get("https://reqres.in/api/users")
.then(response => {
console.log(response);
setUsers(response.data.data);
})
.catch(function(error) {
// handle error
console.log(error);
});
return (
<div>
<table>
<thead>
<tr>
<th>Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
{users.length &&
users.map(user => (
<tr key={user.id}>
<td>{user.first_name}</td>
<td>{user.last_name}</td>
<td>{user.email}</td>
</tr>
))}
{users.length === 0 && "Loading..."}
</tbody>
</table>
</div>
);
但是,该应用程序会不断重新渲染。我试图将ajax调用放在
useEffect
回调中,但是没有任何效果。这是带有代码的沙箱的链接:Codesandbox
最佳答案
您需要将您的api调用移至useEffect
挂钩内:
useEffect(() => {
axios
.get("https://reqres.in/api/users")
.then(response => {
console.log(response);
setUsers(response.data.data);
})
.catch(function(error) {
// handle error
console.log(error);
});
}, [])
Updated sandbox