我目前从改变我的应用程序文件class与生命周期事件,如componentDidMount对functions与useEffect挂钩。
对于大多数文件,我没有看到任何问题,但在下面,我遇到了应用程序冻结的性能问题。控制台中的错误或警告为零,但我的机器和 Chrome 增加了此选项卡上使用的内存。
我错过了什么?
基于旧类的文件代码
listener: any;
componentDidMount() {
const { firebase } = this.props;
this.listener = firebase.onAuthUserListener(
(authUser: any) => {
localStorage.setItem('authUser', JSON.stringify(authUser));
this.setState({ authUser });
},
() => {
localStorage.removeItem('authUser');
this.setState({ authUser: null });
}
);
}
componentWillUnmount() {
this.listener();
}
新的钩子(导致性能问题)
const listener = () => {
firebase.onAuthUserListener(
(authUser: any) => {
localStorage.setItem('authUser', JSON.stringify(authUser));
setState(authUser);
},
() => {
localStorage.removeItem('authUser');
setState(null);
}
);
};
useEffect(() => {
listener();
return () => {
listener();
};
});
可能还值得注意的是,我正在将 TypeScript 与 React 一起使用。
狐的传说
九州编程
白板的微信
相关分类