reactjs - React - 修复了导航栏和导航选项卡

标签 reactjs bootstrap-4 reactstrap

我正在为我的项目使用reactstrap包。因此,我创建了一个 HeaderComponent,它是一个固定在顶部 fixed=topNavbar

import React from 'react';
import Context from '../provider'
import {
    Collapse,
    Navbar, NavbarToggler, NavbarBrand, Nav, NavItem, NavLink,
    Form, FormGroup, Label, Input, Button,
} from 'reactstrap';
import LoginComponent from './LoginComponent'
import SignupComponent from './SignupComponent'

class HeaderComponent extends React.Component {
    render() {
        return (
            <Context.Consumer>
                {context => {
                    return (
                        <Navbar color="light" light expand="md" fixed="top">
                            <NavbarBrand href="/">Reddit</NavbarBrand>
                                <NavbarToggler onClick={() => context.toggleNavbar()} />
                                <Collapse isOpen={context.navbarOpen} navbar>
                                <Nav className="ml-auto" navbar>
                                    <NavItem><LoginComponent /></NavItem>
                                    <NavItem><SignupComponent /></NavItem>
                                </Nav>
                            </Collapse>
                        </Navbar>
                    )   
                }}
            </Context.Consumer>
        )
    }
}

export default HeaderComponent;

我还有一个 TabComponent:

import React, {Component} from 'react'
import Context from '../../provider'
import {Nav, NavItem, NavLink} from 'reactstrap'
import classnames from 'classnames'

class TabComponent extends Component {
    render() {
        return (
            <Context.Consumer>
                {context => (
                    <Nav tabs>
                        <NavItem>
                            <NavLink
                                className={classnames({ active: context.activeTab === '1' })}
                                onClick={() => { context.toggleTab('1'); }}
                            >
                            Home
                            </NavLink>
                        </NavItem>
                        <NavItem>
                            <NavLink
                                className={classnames({ active: context.activeTab === '2' })}
                                onClick={() => { context.toggleTab('2'); }}
                            >
                            Popular
                            </NavLink>
                        </NavItem>
                        <NavItem>
                            <NavLink
                                className={classnames({ active: context.activeTab === '3' })}
                                onClick={() => { context.toggleTab('3'); }}
                            >
                            All
                            </NavLink>
                        </NavItem>                
                    </Nav>
                )}
            </Context.Consumer>
        )
    }
}

export default TabComponent;

我正在使 HeaderComponent 固定,但我不知道如何使下面的 TabComponent 固定 HeaderComponent


基于this回答,我做了以下事情:

顶部组件

import React, {Component} from 'react'
import HeaderComponent from './HeaderComponent'
import TabComponent from './TabComponent'
import {Row, Col, Container} from 'reactstrap'
import './style.css'

export default class TopComponent extends Component {
    render() {
        return (
            <div className='vert-align'>
                <Container>
                    <Row><Col><HeaderComponent /></Col></Row>
                    <Row><Col><TabComponent /></Col></Row>
                </Container>
            </div>
        )
    }
}

样式.css

.vert-align {
    top:0;
    position: fixed;
    z-index:100;
}

它们现在固定在另一个的顶部,但是,它们现在没有覆盖屏幕的整个宽度!

enter image description here

最佳答案

我认为最简单的方法是为 HeaderComponentTabComponent 创建一个父组件 FixedTopComponent,并将其固定到顶部固定=顶部。那么您只需使用引导行或 {display: flex; 垂直对齐两个子组件即可flex-direction: column} 在你的 css 中。

这是一个例子:

class FixedTopComponent extends React.Component {
    render() {
        const vert_align = {
            display: 'flex',
            flexDirection: 'column'
        }
        <div id='fixed-top" style={vert_align} fixed='top'>
            <HeaderComponent />
            <TabComponent />
        </div>
    }
}

编辑:对于你的第二个问题(不确定,因为我从未使用过reactstrap),请尝试:

import React, {Component} from 'react'
import HeaderComponent from './HeaderComponent'
import TabComponent from './TabComponent'
import {Row, Col, Container} from 'reactstrap'
import './style.css'

export default class TopComponent extends Component {
    render() {
        return (
            <Container fluid className='vert-align'>
                <Row><Col><HeaderComponent /></Col></Row>
                <Row><Col><TabComponent /></Col></Row>
            </Container>
        )
    }
}

关于reactjs - React - 修复了导航栏和导航选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51131478/

相关文章:

python - 如何在 ReactJS Docker 中热重载

javascript - Object.assign - 更新特定属性

vue.js - 带有自定义按钮添加和删除的 Bootstrap Vue 表

reactjs - img 未显示在 reactstrap 轮播中

reactjs - 如何在 React 功能组件中获取表单/提交以与 ReactStrap 一起使用?

node.js - 如何使用 NextJS 和 React Router 渲染服务器端 React 内容?

css - 在展开时覆盖导航栏,而不是推送页面内容

html - Bootstrap 4 - 使用align-items-center时相同的列高度

javascript - 如何在立即单击按钮时不显示工具提示?

reactjs - 如何在更改层次结构后保持状态并防止重新渲染 react 组件?