通过 Material UI ButtonGroup 增加和减少按钮

Sas*_*uli 1 buttongroup reactjs material-ui

我想用材质 ui ButtonGroup 创建一个递增/递减按钮。按钮起初就像这个图像。

ButtonGroup 第一部分

当用户单击按钮时,ButtonGroup 的第二部分将显示(如下图所示)。

ButtonGroup 的第二部分

我怎样才能做到这一点?请帮忙。

提前致谢。

代码

import React from "react";
import Grid from "@material-ui/core/Grid";
import Button from "@material-ui/core/Button";
import ButtonGroup from "@material-ui/core/ButtonGroup";

class GroupedButtons extends React.Component {
  state = { counter: 0 };

  handleIncrement = () => {
    this.setState(state => ({ counter: state.counter + 1 }));
  };

  handleDecrement = () => {
    this.setState(state => ({ counter: state.counter - 1 }));
  };
  render() {
    const Btn = (
     <>
      <Button disabled>{this.state.counter}</Button>
      <Button onClick={this.handleDecrement}>-</Button>
     </>
    );

    return (
      <ButtonGroup size="small" aria-label="small outlined button group">
        <Button onClick={this.handleIncrement}>+</Button>
        {this.state.counter > 0 && Btn}
      </ButtonGroup>
    );
  }
}

export default GroupedButtons;
Run Code Online (Sandbox Code Playgroud)

类似上面的代码。但它不起作用。

Ant*_*vik 5

Material UIButtonGroup只需要Button孩子。你像个React.Fragment孩子一样过去。

您可以通过以下方式更改代码:

import React from "react";
import Button from "@material-ui/core/Button";
import ButtonGroup from "@material-ui/core/ButtonGroup";

class GroupedButtons extends React.Component {
  state = { counter: 0 };

  handleIncrement = () => {
    this.setState(state => ({ counter: state.counter + 1 }));
  };

  handleDecrement = () => {
    this.setState(state => ({ counter: state.counter - 1 }));
  };
  render() {
    const displayCounter = this.state.counter > 0;

    return (
      <ButtonGroup size="small" aria-label="small outlined button group">
        <Button onClick={this.handleIncrement}>+</Button>
        {displayCounter && <Button disabled>{this.state.counter}</Button>}
        {displayCounter && <Button onClick={this.handleDecrement}>-</Button>}
      </ButtonGroup>
    );
  }
}

export default GroupedButtons;
Run Code Online (Sandbox Code Playgroud)

在此处查看现场演示:

编辑 thirsty-rain-i1tzi