Как при наведение на дочерний компонент изменить css у родительского компонента React

Есть несколько вложенных функциональных компонентов друг в друга.

<Component 1>
  <Component 2>
    <Component 3>
      <Component 4 />
    </Component 3>
  </Component 2>
</Component 1>

У компонента 1 есть подсветка при наведение (hover). Как сделать так, чтобы при наведение на вложенный компонент 4 снималось выделение у всего компонента 1 ?


Ответы (1 шт):

Автор решения: zybpa

Всем привет! Решил задачу следующим образом: через передачу коллбэка от родителя к дочернему элементу.

у Родителя, где будем менять делаем примерно следующее:

const [background, setBackground] = useState(" ");

Далее, используем возможность встроенных стилей в реакте:

style={{backgroundColor: background}}

И в дочерний передаем пропом:

changeBackground={background => setBackground(background)}

Во все промежуточные компоненты указываем:

changeBackground={changeBackground}

В нижний дочерний:

const [isHovered, setIsHovered] = useState(false);

onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
style={{backgroundColor:`${isHovered ? changeBackground('white') : changeBackground(COLOR.STEEL_TRANSPARENT)}`}}
→ Ссылка