如果我使用material-ui ButtonGroup创建自定义按钮,则无法正常工作

时间:2019-12-03 13:21:34

标签: reactjs material-ui

从标题可以理解,我在@material-ui/core中为Button创建了一个自定义按钮。但是,当我将这些自定义按钮添加到ButtonGroup时,它们不会充当组。

我的自定义按钮:

import React from "react";
import { Button } from "@material-ui/core";
import CloudUploadIcon from '@material-ui/icons/CloudUpload';
import PencilIcon from '@material-ui/icons/LinkSharp'
import { makeStyles } from "@material-ui/core/styles";

const icons = { "cloud": <CloudUploadIcon />, "pencil": <PencilIcon /> }
const useStyles = makeStyles(theme => ({
    root: {
        padding: 30,
        fontSize: 18,
        '&:hover': {
            boxShadow: '0 0 0.1rem 0.1rem rgba(25,25,25,1)'
        }
    }
}));

function __Button(props) {
    const classes = useStyles();
    {
        return (
            <Button variant="outlined" startIcon={icons[props.icon]} className={classes.root}>
                {props.text}
            </Button>
        )
    }
}

export default __Button;

我的使用情况:

<ButtonGroup size="large" aria-label="small outlined button group">
    <__Button text={"I will paste links!"} icon={"pencil"} />
    <__Button text={"I will upload a text file!"} icon={"cloud"} />
</ButtonGroup>

问题图片: Buttons are not grouped

1 个答案:

答案 0 :(得分:1)

您需要将来自ButtonGroup的所有其他道具传递给Button

function __Button({ icon, text, ...otherProps }) {
  const classes = useStyles();
  return (
    <Button
      variant="outlined"
      startIcon={icons[icon]}
      className={classes.root}
      {...otherProps} // passing props from ButtonGroup to Button
    >
      {text}
    </Button>
  );
}

这里是working example

enter image description here