将@ Material-UI选项卡用作导航栏

Bri*_*y G 5 javascript navigation navbar reactjs material-ui

对编码空间来说还很新。我尝试到处寻找该问题的答案,尽管我找到了很多答案,但没有一个对我有用。

我的问题是我想将@ Material-UI选项卡组件用作NavBar,而我似乎只能1.将选项卡变成可以使用但没有动画或指示器的静态链接,或者2.保留动画但就更改页面而言,没有任何功能。

我已经尝试过thisthisthis以及更多内容,以及其中每个答案中的许多答案。

编辑是一个Git回购。

这是我的NavBar组件,当前处于状态#2,它具有动画,但没有功能:

import React from 'react';
import { Paper, Tabs, Tab } from '@material-ui/core';

const navStyle= {
    backgroundColor: '#220000',
    color: '#fff',
}

export class NavBar extends React.Component {
    state = {
        value: 0,
    };

handleChange = (event, value) => {
    event.preventDefault();
    this.setState({ value });
    console.log(value)
};

render() {      
    return (
        <div>
            <Paper>
                <Tabs
                    value={this.state.value}
                    onChange={this.handleChange}
                    indicatorColor={"secondary"}
                    // textColor="secondary"
                    centered
                    style={navStyle}
                >
                    <Tab label="Home" href='/' />
                    <Tab label="About" href='/about' />
                </Tabs>
            </Paper> 
        </div>
    )}
} 
Run Code Online (Sandbox Code Playgroud)

依赖项:

"@material-ui/core": "^1.3.1",
"history": "^4.7.2",
"prop-types": "^15.6.2",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"react-router-dom": "^4.3.1",
"react-scripts": "1.1.4"
Run Code Online (Sandbox Code Playgroud)

Tho*_*lle 6

您可以像在您链接的第一个示例中那样将您的Tab组件制作成 React RouterLink组件。

请确保不要参加preventDefaulthandleChange活动,因为这会阻止链接工作。

例子

class App extends React.Component {
  state = {
    value: 0
  };

  handleChange = (event, value) => {
    this.setState({ value });
  };

  render() {
    return (
      <BrowserRouter>
        <div>
          <Paper>
            <Tabs
              value={this.state.value}
              onChange={this.handleChange}
              indicatorColor={"secondary"}
              centered
              style={navStyle}
            >
              <Tab label="Home" to="/" component={Link} />
              <Tab label="About" to="/about" component={Link} />
            </Tabs>
          </Paper>
          <Switch>
            <Route exact path="/" component={Home} />
            <Route path="/about" component={About} />
          </Switch>
        </div>
      </BrowserRouter>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)