[英]Does a react hook add an event listener every time it's called?
Let's say I have a react hook that listens to an event like resize
on the window
object.假设我有一个反应钩子,它监听
window
object 上的resize
之类的事件。
I want to know if every time I use the hook in some components all over the application I'm also adding a different event listener on window
.我想知道每次我在整个应用程序的某些组件中使用钩子时,我还会在
window
上添加不同的事件侦听器。
If the answer is yes, then i suppose this will be bad for performances, how can i avoid it?如果答案是肯定的,那么我想这对表演不利,我该如何避免呢?
Here's an example of the hook i want to implement:这是我要实现的钩子的示例:
export const useMediaQuery = (): ReturnObject => {
const [desktop, setDesktop] = useState(false);
const getViewport = (): void => {
setDesktop(window.matchMedia(desktopQuery).matches);
};
useEffect(() => {
getViewport();
const listener = (): void => getViewport();
window.addEventListener('resize', listener);
return (): void => window.removeEventListener('resize', listener);
}, []);
return {
deviceType: desktop ? DeviceType.Desktop : DeviceType.Mobile,
};
};
when you use custom hooks , React will allocate a new piece of memory for that component to use that custom hook.当你使用自定义 hooks时,React 将为该组件分配一块新的 memory 以使用该自定义 hook。
so, I think the answer is YES所以,我认为答案是肯定的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.