使用挂钩反应Rest Call无限循环

时间:2020-05-12 21:00:07

标签: reactjs react-hooks

我注意到我的组件陷入了无限循环。它保持拨打相同的电话。

据我了解,isAdmin(): Observable<boolean> { this.isAuthenticated().pipe(map(authenticated => { if (authenticated) { return from(this.currentUserPromise().then(user => user.roles.indexOf('ADMIN') > -1) } return mapTo(false); // there is no authentication, so no current user and no admin! })); } 钩子的工作方式类似于ComponentRender和ComponentUpdate生命周期函数。

此外,我认为这是怎么回事,但无法解决:

在渲染时->调用了API->更新了错误状态->组件已更新->再次调用了UseEffect Hooked

你能帮我吗?

Type 'Observable<Observable<boolean>>' is not assignable to type 'Observable<boolean>'.
   Type 'Observable<boolean>' is not assignable to type 'boolean'.ts(2322)

2 个答案:

答案 0 :(得分:2)

除非另行说明,否则

useEffect将在每个渲染器上运行。您的效果没有依赖项数组,因此它将运行每个渲染,触发重新渲染,然后无限地重新开始。

您可以通过给它一个空数组来告诉useEffect在挂载中仅运行一次:

useEffect(() => {
  getUsernameData();
}, []);

您还可以告诉它仅在某些情况发生变化时才运行。为此,请将变量添加到依赖项数组中:

useEffect(() => {
  getUsernameData();
}, [variable_to_depend_on]);

答案 1 :(得分:1)

尝试更改...

useEffect(() => {
    getUsernameData();
});

useEffect(() => {
  getUsernameData();
}, []);