При повторном использовании компонента мой CSS не применяется к нему - PullRequest
0 голосов
/ 03 августа 2020

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

У меня есть Header Component , который просто занимает всю область просмотра, а затем добавляет NavigationBar Component . Компонент заголовка отлично работает в другом месте, где я его использовал, но по какой-то причине, когда я только что попытался использовать его повторно, панель навигации внутри него стала странной ( все CSS просто исчезли ).

Вот компонент заголовка, который имеет следующий стиль (который работает, кстати): {position: relative; высота: 100vh; width: 100%;}

    import React from "react";
    import NavigationBar from "../NavigationBar/NavigationBar";
    
    import "./Header.css";
    
    const Header = (props) => (
      <div className="blog-header">
        <NavigationBar />
          {props.children}
      </div>
    );
    
    export default Header;

My NavigationBar - это простой React- Bootstrap Navbar (я решил удалить то, что было внутри navigationItems, потому что я не думаю, что это имеет значение для рассматриваемой проблемы):

    import React from "react";
    import { Container, Navbar, Nav, NavbarBrand } from "react-bootstrap";
    import Logo from "../Logo/Logo";
    
    import "./NavigationBar.css";
    
    const navigationItems = []
    const NavigationBar = (props) => (
      <Container>
        <Navbar id="navigation" bg="transparent" variant="dark" expand="lg">
          <div className="div-brand d-flex flex-grow-1">
            <NavbarBrand href="/">
              <Logo />
            </NavbarBrand>
            <div className="w-100 text-right">
              <Navbar.Toggle data-toggle="collapse" data-target="#da-navbarNav">
                <span className="navbar-toggler-icon"></span>
              </Navbar.Toggle>
            </div>
          </div>
          <Navbar.Collapse
            className="text-uppercase flex-grow-1 text-right"
            id="da-navbarNav"
          >
            <Nav className="ml-auto flex-nowrap">
              {navigationItems.map((navItem, index) => {
                return (
                  <Nav.Item key={index}>
                    <Nav.Link
                      id={navItem.id ? navItem.id : null}
                      href={navItem.path}
                      className={navItem.classes.join(" ")}
                      onClick={(event) =>
                        props.navItemClick(event, window.location.pathname, navItem)
                      }
                    >
                      {navItem.placeholder}
                    </Nav.Link>
                  </Nav.Item>
                );
              })}
            </Nav>
          </Navbar.Collapse>
        </Navbar>
      </Container>
    );

Navbar. css код:

    #navigation {
      z-index: 10;
    }
    
    #navigation .div-brand {
      align-items: center;
    }
    
    .navbar-dark .navbar-nav .nav-link {
      color: rgba(255, 255, 255, 0.75);
      letter-spacing: 1px;
      font-size: 0.95rem;
      font-weight: bold;
      line-height: 24px;
      width: 6.4rem;
      text-align: center;
    }
    
    .navbar-dark .navbar-nav .nav-link:hover,
    .navbar-dark .navbar-nav .nav-link:active {
      color: #da3833;
    }
    
    .navbar-dark #btn-contact {
      background-color: #da3833;
      border-radius: 3px;
      text-align: center !important;
    }
    
    .navbar-dark #btn-contact:hover,
    .navbar-dark #btn-contact:active {
      color: white !important;
    }
    
    @media (max-width: 992px) {
      .navbar-dark .navbar-nav .nav-link {
        text-align: right;
        margin-top: 0.2rem;
        margin-left: auto;
      }
    
      .navbar-dark .navbar-nav .nav-item {
        text-align: right;
        width: 100%;
      }
    
      .navbar-toggler {
        outline: none !important;
      }
    }

В настоящее время я повторно использую его внутри этого компонента, который имеет следующие стили :

    .article-header {
      height: inherit;
      width: inherit;
      position: absolute;
      top: 0;
    }

    import React, { useState, useEffect, useCallback } from "react";
    import Header from "../../../components/Header/Header";
    
    import "./ArticlePage.css";
    
    const ArticlePage = (props) => {
      const [id, setId] = useState(null);
    
      const loadQueryParams = useCallback(() => {
        setId(props.match.params.id ? props.match.params.id : null);
      }, []);
    
      useEffect(() => loadQueryParams(), [loadQueryParams]);
    
      return (
        <div>
          <Header>
            <div
              className="article-header"
              style={{ backgroundColor: "black", opacity: "0.2" }}
            >
              {id}
            </div>
          </Header>
        </div>
      );
    };
    export default ArticlePage;

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

Если вам нужна дополнительная информация или подробности, сообщите мне! Спасибо!

РЕДАКТИРОВАТЬ: по запросу, вот демонстрация

1 Ответ

0 голосов
/ 04 августа 2020

Мне удалось это решить. Проблема заключалась в том, что моя папка «bootstrap. css», содержащая мою bootstrap тему, не импортировалась глобально в «index. js», а вместо этого находилась внутри «index. html».

Следует отметить: я также использовал маршрутизатор для go этого нового компонента, в котором я использовал панель навигации, и, поскольку файлы css не были импортированы глобально, css не есть.

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