Должен ли я удалить "однажды" зарегистрированные прослушиватели событий во время очистки в React - PullRequest
1 голос
/ 12 июля 2020

Должен ли я удалить зарегистрированные прослушиватели событий следующим образом:

window.addEventListener('resize', callback, { once: true });

Во время очистки в React следующим образом:

useEffect(() => {
  return () => {
    window.removeEventListener('resize', callback, { once: true });
  };
}, []);

Или это совершенно не нужно, так как он будет автоматически удален после этого был вызван один раз? Вероятность того, что пользователь закроет браузер до того, как будет вызван прослушиватель событий, мала, но она есть. Итак, в настоящее время я думаю, что мне следует удалить его во время очистки, даже если прослушиватель событий будет удален автоматически после его вызова.

1 Ответ

1 голос
/ 12 июля 2020

документация выглядит следующим образом:

Once - это логическое значение, указывающее, что прослушиватель должен быть вызван не более одного раза после добавления. Если true, слушатель будет автоматически удален при вызове.

Но в случае, когда обратный вызов еще не был вызван, и вы размонтируете свой компонент и снова монтируете. У вас будет два идентичных слушателя.

В результате вам нужно удалить слушателя, если он не был вызван, и не нужно удалять слушателя, если он был вызван

...