【发布时间】:2021-09-14 05:11:37
【问题描述】:
我正在开发一个 reactjs 应用程序。我正在尝试从 ajax 响应的数据中列出用户。下面是代码。
const [ users, setUsers ] = useState([]);
useEffect(() => {
const config = {
headers: {
Authorization: 'Bearer ' + localStorage.getItem('token')
}
}
axios.get('users', config).then((res) => {
if (res.status == 200 && res.data.msg == "success") {
setUsers(res.data.users)
}
else {
history.push("/");
}
feather.replace()
});
});
我正在使用下面的代码在表格中列出用户。
function getRows(users) {
return users.map(user => {
const { u_id, username } = user;
return (
<tr key={u_id} id={u_id}>
<td>{u_id}</td>
<td>{username}</td>
<td class="delete">
<a href="javascript:void(0)"><span data-feather="edit"></span></a><a href="javascript:void(0)" onClick={(e) => deleteUser(e, u_id)}><span data-feather="trash"></span></a>
</td>
</tr>
)
});
}
现在的问题是它正在生成一个无限循环的请求来获取用户。我认为这是因为每次状态更改时都会调用 useEffect 钩子。如何解决这个问题。
【问题讨论】:
-
在
useeffect的末尾使用空白数组,所以它看起来像},[] ) -
@CodeBug 酷!。工作!
-
@Akhilesh 您必须使用空数组作为第二个参数来停止对组件更新的触发效果。这是一篇关于 useEffect 和数据获取的有用文章robinwieruch.de/react-hooks-fetch-data
-
useEffect without dependency = 在每次渲染上运行效果。 useEffect with empty
[]dependency = 只运行一次效果。 useEffect 与依赖[some_state]= 对每个some_state更改运行效果。 -
将添加答案,请将其标记为已接受。
标签: javascript reactjs