【问题标题】:e.currentTarget for material ui buttonse.currentTarget 用于材质 ui 按钮
【发布时间】:2019-06-26 22:19:48
【问题描述】:
  • 我有三个选项卡和三个按钮。
  • 当我选择一个按钮时,它应该显示第一个按钮被选中
  • 当我选择第二个按钮时,它应该显示第二个按钮被选中
  • 其他按钮也是如此。
  • 我尝试使用 e.currentTarget 实现但没有成功。
  • 能否告诉我如何修复它。
  • 在下面提供我的代码 sn-p 和沙箱。

https://codesandbox.io/s/material-demo-c4f5u

class SimpleTabs extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      selectedButton: false,
      value: 0
    };
  }

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

  selectButton = e => {
    console.log("selectButton--->", e.currentTarget);
    console.dir("selectButton--->", e.currentTarget);
    const selectedButtonTarget = e.currentTarget;

    this.setState({ selectedButton: true });
  };
  renderButtonSelection = () => {
    if (this.state.selectedButton === true) {
      return (
        <div>
          <div>no button selected</div>
          <div>first button selected</div>
          <div>second button selected</div>
          <div>third button selected</div>
        </div>
      );
    }
  };

  render() {
    //const classes = useStyles();
    const { classes } = this.props;
    //  const [value, setValue] = React.useState(0);

    return (
      <div className={classes.root}>
        <AppBar position="static">
          <Tabs value={this.state.value} onChange={this.handleChange}>
            <Tab label="Item One" />
            <Tab label="Item Two" />
            <Tab label="Item Three" />
          </Tabs>
        </AppBar>
        {this.state.value === 0 && (
          <TabContainer>
            Item One
            <Button onClick={this.selectButton}>button one</Button>
          </TabContainer>
        )}
        {this.state.value === 1 && (
          <TabContainer>
            Item Two <Button onClick={this.selectButton}>button two</Button>
          </TabContainer>
        )}
        {this.state.value === 2 && (
          <TabContainer>
            Item Three <Button onClick={this.selectButton}>button three</Button>
          </TabContainer>
        )}

        {this.renderButtonSelection()}
      </div>
    );
  }
}

export default withStyles(styles)(SimpleTabs);

【问题讨论】:

    标签: javascript html reactjs redux material-ui


    【解决方案1】:

    希望这是您正在寻找的:

    将 selectButton 和 renderButtonSelection 方法替换为以下内容:

    getNumStr = n => {
        switch (n) {
        case 1:
            return "one";
        case 2:
            return "two";
        case 3:
            return "three";
        default:
            return "";
        }
    };
    
    selectButton = e => {
      const selectedButtonTarget = this.state.value + 1;
      this.setState({ selectedButton: selectedButtonTarget });
    };
    
    renderButtonSelection = () => {
      if (this.state.selectedButton) {
        return <div>button {this.getNumStr(this.state.selectedButton)} selected</div>;
      }
      return null;
    };
    

    https://codesandbox.io/s/material-demo-c4mnj

    【讨论】:

    • 嘿,不是第一名,你能把输出的措辞当作第一名吗……你也可以给 cmets 吗
    • 更新了答案。 :)
    • 嘿,应该选择按钮 3 而不是选择按钮 3
    • 选择按钮一,选择按钮二,选择按钮 3?
    • 这三个都是数字而不是字母
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2021-07-23
    • 2021-03-04
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多