Uncaught TypeError: Невозможно прочитать свойство 'name' из неопределенного [antdesign - switch] - PullRequest
0 голосов
/ 30 октября 2019

Я хочу использовать событие как обратный вызов в переключателе antd. Я не знаю, как получить значение this.state.game, используя событие.

handleToggle = event => {
     this.setState({
         [event.target.name]: !this.state[event.target.name]
     });
};

   render() {
     return(
        <Switch 
            checkedChildren='on' 
            unCheckedChildren='off' 
            name='game' value={this.state.game} 
            onClick={this.handleToggle}
        />
    );
}

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Переключатель onClick подпись:

Function(checked: boolean, event: Event)

Так должно быть:

handleToggle = (_, event) => {
  this.setState({
    [event.target.name]: !this.state[event.target.name]
  });
}

т.е. event является вторым аргументом.

0 голосов
/ 30 октября 2019

вам не нужно добавлять проп value к Switch.

class App extends Component {
  state = {
    game: false
  };

  handleToggle = (checked, event) => {
    this.setState({
      game: checked
    });
  };

  render() {
    const { game } = this.state;
    console.log("switch status: ", game);
    return (
      <div className="App">
        <Switch
          defaultChecked={false}
          checkedChildren="on"
          unCheckedChildren="off"
          name="game"
          onClick={this.handleToggle}
        />
      </div>
    );
  }
}

вот краткое демо код песочницы

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