我注意到我的组件陷入了无限循环。它保持拨打相同的电话。
据我了解,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)
答案 0 :(得分:2)
useEffect
将在每个渲染器上运行。您的效果没有依赖项数组,因此它将运行每个渲染,触发重新渲染,然后无限地重新开始。
您可以通过给它一个空数组来告诉useEffect
在挂载中仅运行一次:
useEffect(() => {
getUsernameData();
}, []);
您还可以告诉它仅在某些情况发生变化时才运行。为此,请将变量添加到依赖项数组中:
useEffect(() => {
getUsernameData();
}, [variable_to_depend_on]);
答案 1 :(得分:1)
尝试更改...
useEffect(() => {
getUsernameData();
});
到
useEffect(() => {
getUsernameData();
}, []);