Задать вопрос
@Mikhail_Litvinov
начинающий web-разработчик

Почему не работает код на React?

Всем привет!
Начали осваивать React и почти сразу появился вопрос:
есть два файла - Header.jsx и Submenu.jsx.
в header.jsx есть контейнер <div id="modalMenu"></div>, в submenu, собственно, есть контейнер <div id="submenuContainer"></div>.

в чем, собственно, вопрос: я хочу задать стиль контейнеру саб-меню:
<div id="submenuContainer" style={{marginLeft: document.getElementById("modalMenu").scrollWidth}}></div>

Почему оно не работает и как это исправить? Оба файла загружаются в app.jsx, вот код:

app.jsx:
import React from "react";
import Header from "./app/Header/Header";
import "./App.stylesheet.css";
import "./App.main.css";
import Submenu from "./app/Submenu/Submenu";
import Product from "./app/Modules/Product/Product"
import Loading from "./app/Loading/Loading"

class App extends React.Component {
    render() {
        return (
            <div>
                <header>
                    <Header />
                </header>
                <main id="content">
                    <Submenu />
                    <Product />
                </main>
            </div>
            // <Loading />
        );
    }
}

export default App;


header.jsx:
import React from "react";
import Menu from "./Menu/Menu";
import Logo from "./Logo/Logo";
import Controls from "./Controls/Controls";
import MenuContainer from "./Menu/MenuContainer";

class Header extends React.Component {
    render() {
        return (
            <div className="header-container" id="headerContainer">
                <div className="flex-row">
                    <div className="col-1-3"><Menu /></div>
                    <div className="col-1-3"><Logo /></div>
                    <div className="col-1-3"><Controls /></div>
                </div>
                <div className="modal-menu" id="modalMenu"><MenuContainer/></div>
            </div>
        );
    }
}

export default Header;


submenu.jsx:
import React from "react";
import Statistic from "./Sub-pages/Statistic";
import Products from "./Sub-pages/Products";
import Articles from "./Sub-pages/Articles";
import Sales from "./Sub-pages/Sales";
import Mediafiles from "./Sub-pages/Mediafiles";
import Delivery from "./Sub-pages/Delivery";
import Partners from "./Sub-pages/Partners";
import Suppliers from "./Sub-pages/Suppliers";
import Purchases from "./Sub-pages/Purchases"

class Submenu extends React.Component {
    render() {
        return (
            <div className="submenu" id="submenuContainer" style={{marginLeft: document.getElementById("modalMenu").scrollWidth}}>
                {/* <Statistic /> */}
                {/* <Products /> */}
                {/* <Articles /> */}
                {/* <Sales /> */}
                {/* <Mediafiles /> */}
                {/* <Delivery /> */}
                {/* <Partners /> */}
                {/* <Suppliers /> */}
                {/* <Purchases /> */}
            </div>            
        );
    }
}

export default Submenu;


Очень прошу не кидаться в меня тапками, очень хочу разобраться, как с этим работать. Спасибо!
  • Вопрос задан
  • 176 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Пригласить эксперта
Ответы на вопрос 2
kirbi1996
@kirbi1996
В реакте не используют id, там есть своё реакт дом дерево, поэтому про id тут нужно забыть. Теперь что касается функционала, нужно изучить что такое пропсы, и прокидывать с помощью них. Либо если компоненты имеют большую цепочку, и нужно много прокидывать использовать redux mobx useState на выбор
Ответ написан
Комментировать
@n1ksON
мидл
Что вы за стиль пытаетесь задать? Если уж задаёте настолько максимально странный отступ, то пишите так:
<div id="submenuContainer" style={{marginLeft: {`${document.getElementById("modalMenu").scrollWidth}px`}}}></div>

Если только начинаете осваивать React, переходите сразу к изучению функциональных компонент, а не классовых.

React не рекомендует обращение к dom, то есть рекомендует не использовать вызовы document.
Лучше найти более адекватный вариант, чтобы задать отступ.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽