javascript - 使用@Material-UI 标签作为导航栏

标签 javascript reactjs navigation navbar material-ui

编码空间相当新。我曾尝试到处寻找这个问题的答案,虽然我找到了很多答案,但没有一个对我有用。

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

我试过了this , this , this ,以及更多,以及在每一个中找到的许多答案。

编辑:Here是一个 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>
    )}
} 

依赖关系:

"@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"

最佳答案

您可以将您的 Tab 组件变成 React Router Link 组件,就像您链接的第一个示例中那样。

请确保不要在 handleChange 事件上使用 preventDefault,因为那样会使链接停止工作。

示例

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>
    );
  }
}

关于javascript - 使用@Material-UI 标签作为导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51313969/

相关文章:

javascript - 清除存储并加载网格中的搜索结果

javascript - 如何将单个状态 Prop 重置为其初始值

reactjs - 如何在 React Native 应用程序启动时组合多个任务

html - CSS 悬停菜单项

intellij-idea - 如何在WebStorm中导航到角色位置?

javascript - 将散列数据作为散列的 key 传递再次返回不正确的结果

javascript - React Redux - 在没有连接的情况下调用分派(dispatch)(不是来自 react 组件)

javascript - redux-promise 错误 : Actions must be plain objects. 使用自定义中间件

javascript - 在reducer中使用map函数操作数组

javascript - div 之间的下一个上一个导航