Как добавить класс в тело только маршрута

#javascript #reactjs #next.js

Вопрос:

У меня есть класс под названием: product-page-bottom-padding

теперь я хочу добавить /product/{slug} в элемент только маршрут этого класса body . Он должен удаляться по другим маршрутам.

Как справиться с этим сценарием?

Комментарии:

1. На мой взгляд, лучшим подходом было бы отправить имя класса в качестве реквизита компоненту при вызове маршрута. Тогда компонент может иметь такое условие, как className={classProp? classProp : null)

Ответ №1:

Вы можете добавить класс в тело в крюке useefect компонента, который вы визуализируете для /product/{slug} чего-то вроде:

 function ChildComponent() {
   useEffect(() => {
      document.body.classList.add("product-page-bottom-padding");
      
      return () => {
         document.body.classList.remove("product-page-bottom-padding");
      }
   }, [])
// other body
}
 

Ответ №2:

в Next.js, каждая страница(маршрут) рассматривается как отдельный компонент, поэтому вы можете обернуть ее условным (троичным) оператором следующим образом :

 className={condition? firstClass: secondClass}