reactstrap导航栏图标不会出现

时间:2017-12-04 00:06:26

标签: css twitter-bootstrap reactjs reactstrap

我正在尝试将导航栏设置为我的反应应用程序,而我正在使用此代码: ReactStrap navbar component

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

small devices navbar (icon is not show)

我的NavBar.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;

2 个答案:

答案 0 :(得分: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版本,whcih是你的副本,没有第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;

得到了这个

Screenshot of chrome devtools responsive view

根据我自己的经验,我注意到通过试验或实现所需的更改很容易导致css冲突。我要做的是测试你在新项目中所做的任何css更改,发现问题,然后将其修复到原始(工作)项目中。

我希望这对你有所帮助,因为我整个上午都在尝试尝试多个css文件并对组件做出反应。我希望我能提供更多帮助,但我还不允许发表评论。祝你好运!

答案 1 :(得分:0)

我想您在Navbar组件中缺少扩展道具。

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


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

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

相关问题