Реакция: добавить класс тела только к определенным компонентам в ловушке useEffect? - PullRequest
1 голос
/ 08 июля 2019

Я использую React 16.8.6 и хуки. Я новичок в крючках.

У меня есть компонент, загруженный в маршрут, к которому мне нужно добавить класс тела. Когда пользователь покидает эту страницу, мне нужно удалить класс. Я использую

  useEffect(() => {
    document.body.className = 'signin';
  }, []);

Это правильно добавляет класс к тегу body. За исключением случаев, когда я перехожу на другую страницу, класс остается. Если я перезагрузлю вторую страницу, она исчезнет.

Как удалить класс, когда компонент отключается при изменении маршрута?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Если ваш эффект возвращает функцию, она будет действовать как очистка.

useEffect(() => {
  document.body.classList.add('signin');

  return function cleanup() {
    document.body.classList.remove('signin');
  };
}, []);

Вы можете проверить Эффекты с очисткой в документации

1 голос
/ 08 июля 2019

Хук useEffect поддерживает функцию очистки, которая запускается при размонтировании компонента

useEffect(() => {
  document.body.className = 'signin';
  return () => { document.body.className = ''; }
});

См. документы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...