我是一名React Hook新手...
以这个例子为例
useEffect(() => {
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
// Specify how to clean up after this effect:
return function cleanup() {
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
};
});
来自文档:
React在组件卸载时执行清理操作。但是,正如我们之前学到的那样,effect会在每次渲染时运行而不仅仅是一次。这就是为什么React在下次运行effect之前会清除上一次渲染的副作用。
那么这是否意味着unsubscribeFromFriendStatus
只在组件卸载时运行一次还是每次渲染都运行呢?
扩展我的问题:
如果unsubscribeFromFriendStatus
每次渲染时都运行,并且仅通过使用可选的第二个参数来跳过它...那么是否会使原始的componentWillMount
和componentWillUnmount
的显式执行更加困难?例如,我想在componentWillMount
时进行subscribe
,并且只在componentWillUnmount
时运行unsubscribe
?