【问题标题】:Disable switch button in React在 React 中禁用切换按钮
【发布时间】:2018-12-09 19:17:08
【问题描述】:

如果我单击“年度”单选按钮,则应隐藏或禁用切换按钮(标记为“半天”)(仅适用于年度单选按钮)。我如何在 React 中做到这一点?

<RadioGroup onChange={this.onChange} value={this.state.leavevalue}>
    <Radio value={1}>Casual</Radio>
    <Radio value={2}>Medical</Radio>
    <Radio value={3}>Annual</Radio>
    <Radio value={4}>Lieu</Radio>
    <Radio value={5}>Special</Radio>
    <Radio value={6}>Maternity</Radio>
    <Radio value={7}>Paternity</Radio>
    <Radio value={8}>NoPay</Radio>
</RadioGroup>

这是我的开关按钮代码:

<Switch onChange={this.handleHalfDay} checked={this.state.isHalfDay} />

这是我的 onChange 函数:

onChange = (e) => {
    this.setState({
        leavevalue: e.target.value,
        isHalfDay: false,
    });
}

我的单选按钮和切换按钮:

【问题讨论】:

  • 您的代码中没有这样的开关。
  • RadioGroup - 它属于哪个库?

标签: javascript reactjs radio-button


【解决方案1】:

当您的leavevalue 状态变量等于3 时,您可以禁用Switch

示例

class App extends React.Component {
  state = {
    leavevalue: 1,
    isHalfDay: true
  };

  handleChange = value => {
    this.setState({ leavevalue: value });
  };

  handleHalfDay = () => {
    this.setState(previousState => {
      return { isHalfDay: !previousState.isHalfDay };
    });
  };

  render() {
    return (
      <div>
        <RadioGroup
          selectedValue={this.state.leavevalue}
          onChange={this.handleChange}
        >
          <Radio value={1} />Casual
          <Radio value={2} />Medical
          <Radio value={3} />Annual
          <Radio value={4} />Lieu
          <Radio value={5} />Special
          <Radio value={6} />Maternity
          <Radio value={7} />Paternity
          <Radio value={8} />NoPay
        </RadioGroup>
        <Switch
          onChange={this.handleHalfDay}
          checked={this.state.isHalfDay}
          disabled={this.state.leavevalue === 3}
        />
      </div>
    );
  }
}

【讨论】:

    【解决方案2】:

    一个简单的条件语句就可以了:

    onChange = (e) => {
        this.setState({
          leavevalue: e.target.value,
          isHalfDay: false,
          isHalfDayHidden: e.target.value === 3
        });
      }
    

    还有一个显示或隐藏开关的条件

    {!this.state.isHalfDayHidden && (
      <Switch onChange={this.handleHalfDay} checked={this.state.isHalfDay} />
    )}
    

    【讨论】:

    • 也许,你可以试试e.target.value == 4。 value 可能是一个字符串。
    猜你喜欢
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2020-04-19
    • 2022-11-10
    • 2014-01-04
    • 2021-11-28
    相关资源
    最近更新 更多