Можно ли отменить выбор <Radio />, нажав выбранную (в React)? - PullRequest
0 голосов
/ 16 мая 2019

Можно ли отменить выбор радио, щелкнув по выбранному?

Я знаю, что это поведение браузера по умолчанию, но я работал над этой пользовательской функцией.

Материал-ui не может сделать это тоже.

Я знаю Material-ui Обертывания <input type="radio"> внутри <label />, это выглядит так:

<label>
  <input type="radio" onChange={() => {}}>
</label>

Если я хочу реализовать эту функцию, мне придется заменить onChange на onClick, но тогда браузер будет кричать мне, что <input /> должен иметь onChange обработчик событий.

Таккак правильно перехватить onChange вместе с onClick обработчиком событий?

Должен ли я просто дать onChange событие пустую функцию?Или я должен позвонить preventDefault?

1 Ответ

1 голос
/ 16 мая 2019

Проверить это URL

import React, { Component } from 'react';
import { render } from 'react-dom';
import Hello from './Hello';
import './style.css';

class App extends Component {
  constructor() {
    super();
    this.state = {
      group1:[{"value":"1"},
      {"value":"2"},
      {"value":"3"}],
      group1Selected:null,
      group2:[{"value":"1"},
      {"value":"2"},
      {"value":"3"}],
       group2Selected:null,
    };
  }
  ChangeOption = (i,group) =>{
    var groupData = this.state[group] == i?null:i;        
    this.setState({[group]:groupData})
  }
  render() {
    const {group1,group2,group1Selected,group2Selected} = this.state;
    return (
      <div>
        {
          group1.map( (data,i)=><><input type="radio" id={`1-${i}`} onClick={e=>this.ChangeOption(i,"group1Selected")} checked={i==group1Selected?true:false} name="1" value={data.value}/><label for={`1-${i}`}>{data.value}</label></>)
        }
        <br/>
        {
          group2.map( (data,i)=><><input id={`2-${i}`} onClick={e=>this.ChangeOption(i,"group2Selected")} type="radio" checked={i==group2Selected?true:false} name="2" value={data.value}/><label for={`2-${i}`}>{data.value}</label></>)
        }
      </div>
    );
  }
}

render(<App />, document.getElementById('root'));


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...