Отключить кнопку переключения в React - PullRequest
0 голосов
/ 01 июля 2018

Если я нажимаю переключатель «Годовой», то кнопка переключения (с надписью «полдня») должна быть скрыта или отключена (только для переключателя «Годовой»). Как мне это сделать в 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,
    });
}

Мои радиокнопки и кнопка переключения:

radio buttons and the switch button

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вы можете отключить Switch, когда переменная состояния leavevalue равна 3.

Пример

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>
    );
  }
}
0 голосов
/ 01 июля 2018

Простое условное утверждение будет делать:

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} />
)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...