Отрисовка компонентов на вкладках пользовательского интерфейса материала - PullRequest
0 голосов
/ 13 июня 2019

Я пытался визуализировать определенные компоненты при нажатии внутри содержимого вкладки.

Это то, что я делал:

import React, { Component } from "react";

export class Global extends Component {
  render() {
    return <div>Global</div>;
  }
}

export default Global;

Это основной компонент, который нужно показать.

import React, { Component } from "react";
import PropTypes from "prop-types";
import AppBar from "@material-ui/core/AppBar";
import Tabs from "@material-ui/core/Tabs";
import Tab from "@material-ui/core/Tab";
import Typography from "@material-ui/core/Typography";
import Toolbar from "@material-ui/core/Toolbar";
import Button from "@material-ui/core/Button";
import { BrowserRouter, Switch, Route } from "react-router-dom";

import IconButton from "@material-ui/core/IconButton";
import SearchIcon from "@material-ui/icons/Search";
import Link from "@material-ui/core/Link";
import Global from "../Dashboard/Global";
import Graficos from "../Dashboard/Graficos";
import Individual from "../Dashboard/Individual";
import Temporais from "../Dashboard/Temporais";
import CSSTransitionGroup from "react-addons-css-transition-group";
import { Paper } from "@material-ui/core";

import { classes } from "../constants/tabs";

function TabContainer(props) {
  return (
    <Typography
      component="div"
      style={{
        padding: 8 * 3
      }}
    >
      {" "}
      {props.children}{" "}
    </Typography>
  );
}

TabContainer.propTypes = {
  children: PropTypes.node.isRequired
};

//const sections = ["Indicador 1", "Indicador 2", "Indicador 2", "Indicador 2"];

const PageShell = (Page, previous) => {
  return props => (
    <div className="page">
      <CSSTransitionGroup
        transitionAppear={true}
        transitionAppearTimeout={600}
        transitionEnterTimeout={600}
        transitionLeaveTimeout={600}
        transitionName={props.match.path === "/one" ? "SlideIn" : "SlideOut"}
      >
        {console.log(props)}
        <Page {...props} />
      </CSSTransitionGroup>
    </div>
  );
};

function ItemOne(theme) {
  return (
    <Paper>
      <div>Item 1</div>
    </Paper>
  );
}

function ItemTwo(theme) {
  return (
    <Paper>
      <div>Item two</div>
    </Paper>
  );
}

export default function Header() {
  const [value, setValue] = React.useState(0);

  function handleChange(event, newValue) {
    setValue(newValue);
  }

  return (
    <div className={classes.root}>
      <AppBar position="static">
        <Tabs value={value} onChange={handleChange}>
          {/* <Tabs value={value} onChange={handleChange}>
          {sections.map(section => (
            <Tab label={section} />
          ))}
        </Tabs> */}
          <Tab label="Item One" component={Link} to="/global" />
          <Tab label="Item Two" component={Link} to="/individual" />
          <Tab label="Item Three" component={Link} to="/temporal" />
          <Tab label="Item Four" component={Link} to="/graficos" />
        </Tabs>
      </AppBar>
      <Switch>
        <Route path="/global" component={PageShell(ItemOne)} />
        <Route path="/individual" component={PageShell(ItemTwo)} />
      </Switch>
      {/* {value === 0 && <TabContainer>Item One</TabContainer>}
      {value === 1 && <TabContainer>Item Two</TabContainer>}
      {value === 2 && <TabContainer>Item Three</TabContainer>}
      {value === 3 && <TabContainer>Item Four</TabContainer>} */}
    </div>
  );
}

Это мой заголовок материала, и я пытаюсь загрузить этот глобальный компонент ниже моего заголовка.Идея заключается в том, что мой заголовок исправлен, и компонент отображается на вкладке.Может кто-нибудь помочь мне с тем, что я делаю не так?

...