Как я могу создать пользовательские вкладки с многокомпонентной меткой в ​​пользовательском интерфейсе материала? - PullRequest
1 голос
/ 14 мая 2019

Я использую пользовательский интерфейс материала, material-ui/Tabs Пример кода вот так ...

import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from 'material-ui/styles';
import AppBar from 'material-ui/AppBar'
import Tabs, { Tab } from 'material-ui/Tabs';
import Typography from 'material-ui/Typography';

const styles = theme => ({
  bigIndicator: {
    height: 5,
  },
});

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

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

  render() {
    const { classes } = this.props;
    const {value} = this.state

    return [
      <AppBar position="static" key="appbar">
        <Tabs 
          classes={{ indicator: classes.bigIndicator }} 
          value={value}
          onChange={this.handleChange}
        >
          <Tab label="T1 Label 1" />
          <Tab label="T2 Label 1" />
          <Tab label="T3 Label 1" />
        </Tabs>
      </AppBar>,
      <div key="tab-content">
        {value === 0 && <Typography>Item One</Typography>}
        {value === 1 && <Typography>Item Two</Typography>}
        {value === 2 && <Typography>Item Three</Typography>}
      </div>
    ]
  }
}

BasicTabs.propTypes = {
  classes: PropTypes.object.isRequired,
};

export default withStyles(styles)(BasicTabs);


Но я хочу добавить метку 2 в каждой вкладке, чтобы это выглядело примерно так ...enter image description here

Это мои примеры кодов и коробка https://codesandbox.io/s/xjj5j6284

Заранее спасибо.

1 Ответ

0 голосов
/ 14 мая 2019

Метка может быть настолько сложной, насколько вам нужно. Например:

          <Tab
            label={
              <React.Fragment>
                T1 Label 1<br />
                <span style={{ fontSize: "smaller" }}>T1 Label2</span>
              </React.Fragment>
            }
          />

Edit Material UI - Customizing tab indicator

С одной стороны, я хочу убедиться, что вы знаете, что используете очень старую версию Material-UI. Импорт для текущей версии начинается с "@ material-ui / core" вместо "material-ui".

Так что вместо

import { withStyles } from "material-ui/styles";
import AppBar from "material-ui/AppBar";
import Tabs, { Tab } from "material-ui/Tabs";
import Typography from "material-ui/Typography";

у вас должно быть

import { withStyles } from "@material-ui/core/styles";
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";
...