1

我正在尝试为我的反应应用程序制作导航栏,并且我正在使用以下代码: ReactStrap navbar component

但是,导航栏图标不会出现在小型设备视图中。

小设备导航栏(图标不显示)

我的导航栏.js

import React, {Component} from 'react';
import NavItems from "./NavItems";
import { Collapse, Navbar, NavbarToggler, NavbarBrand, Nav, NavItem, NavLink } from 'reactstrap';
class NavBar extends Component {
    constructor(props) {
        super(props);
        this.toggleNavbar = this.toggleNavbar.bind(this);
        this.state = {
             collapsed: true
        };
    }
    toggleNavbar() {
        this.setState({
            collapsed: !this.state.collapsed
        });
    }
    render() {
        return (
            <div>
                <Navbar color="faded" light>
                    <NavbarBrand href="/" className="mr-auto">Hoje para jantar</NavbarBrand>
                    <NavbarToggler onClick={this.toggleNavbar} className="mr-2" />
                    <Collapse isOpen={!this.state.collapsed} navbar>
                        <Nav navbar>
                            <NavItems>
                                <NavLink href="/components/">Components</NavLink>
                            </NavItems>
                        </Nav>
                    </Collapse>
                </Navbar>
            </div>
        );
    }
}
export default NavBar;
4

2 回答 2

4

我猜你错过了 Navbar 组件中的 expand 道具。

例如,如果将 expand prop 设置为“lg”,则导航栏将为宽度小于“lg”(小于 1200px)的设备添加图标:


<Navbar color="light" light expand="lg">...</Navbar

您还可以将扩展属性设置为“md”或“sm”。

于 2019-02-07T18:58:38.990 回答
1

我尝试使用create-react-app以下内容重新创建您的问题并将其放在一起package.json

{
  "name": "so2",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "bootstrap": "^4.0.0-beta.2",
    "jquery": "^3.2.1",
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-popper": "^0.7.4",
    "react-scripts": "1.0.17",
    "reactstrap": "^5.0.0-alpha.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

我的 NavBar.js 版本,是您的副本,没有第 2 行和第 25-27 行:

import React, {Component} from 'react';
// import NavItems from "./NavItems";
import { Collapse, Navbar, NavbarToggler, NavbarBrand, Nav, NavItem, NavLink } from 'reactstrap';
class NavBar extends Component {
    constructor(props) {
        super(props);
        this.toggleNavbar = this.toggleNavbar.bind(this);
        this.state = {
            collapsed: true
        };
    }
    toggleNavbar() {
        this.setState({
            collapsed: !this.state.collapsed
        });
    }
    render() {
        return (
            <div>
                <Navbar color="faded" light>
                    <NavbarBrand href="/" className="mr-auto">Hoje para jantar</NavbarBrand>
                    <NavbarToggler onClick={this.toggleNavbar} className="mr-2" />
                    <Collapse isOpen={!this.state.collapsed} navbar>
                        <Nav navbar>
                            {/*<NavItems>*/}
                                {/*<NavLink href="/components/">Components</NavLink>*/}
                            {/*</NavItems>*/}
                        </Nav>
                    </Collapse>
                </Navbar>
            </div>
        );
    }
}
export default NavBar;

得到了这个

chrome devtools 响应式视图的截图

根据我自己的经验,我注意到通过试验或实施您想要的更改很容易引起 CSS 冲突。我要做的是测试您对新项目所做的任何 css 更改,发现问题,然后在原始(工作)项目中修复它。

我希望这对您有所帮助,因为我整个上午都在尝试使用多个 css 文件和 react 组件。我希望我能提供更多帮助,但我还不能发表评论。祝你好运!

于 2017-12-21T20:39:08.377 回答